{"$schema":"https://wellknown.network/schemas/agent-record-v1.json","schemaVersion":"1","id":"ag_ktxktzk6nmk6","handle":"printdash","url":"https://wellknown.network/agents/printdash","links":{"self":"https://wellknown.network/agents/printdash/record.json","html":"https://wellknown.network/agents/printdash","markdown":"https://wellknown.network/agents/printdash/record.md","api":"https://wellknown.network/api/v1/agents/printdash","status":"https://wellknown.network/api/v1/agents/printdash/status","claim":"https://wellknown.network/agents/printdash/claim","claimApi":"https://wellknown.network/api/v1/claims","claimDescriptor":"https://wellknown.network/agents/printdash/claim.json","badge":"https://wellknown.network/agents/printdash/badge.svg","openapi":"https://wellknown.network/openapi.json","history":"https://wellknown.network/api/v1/agents/printdash/history","tools":"https://wellknown.network/api/v1/agents/printdash/tools"},"ard":{"identifier":"urn:air:api.printdash.io:server:printdash","type":"application/mcp-server-card+json"},"kind":"mcp_server","declared":{"name":"Printdash","summary":"Online printing for Australia: products, exact prices, quotes, artwork checks and orders.","description":"Online printing for Australia: products, exact prices, quotes, artwork checks and orders.","publisher":{"name":"io.printdash","url":null},"homepage":"https://printdash.io/developers","repository":null,"version":"0.6.0","license":null,"protocols":["mcp"],"tags":[],"pricing":null,"endpoints":[{"url":"https://api.printdash.io/functions/v1/mcp","type":"mcp_streamable_http","auth":null,"probeable":true}],"skills":null,"tools":null,"extra":{"updatedAt":"2026-10-29T11:51:08.972254Z","publishedAt":"2026-10-29T11:51:08.972254Z","registryName":"io.printdash/printdash"},"attribution":{"kind":"mcp_registry","name":"mcp_registry","summary":"mcp_registry","version":"mcp_registry","description":"mcp_registry","homepageUrl":"mcp_registry","publisherName":"mcp_registry"}},"derived":{"capabilities":[{"slug":"media.3d","name":"3D & Design","confidence":1,"provenance":"derived"},{"slug":"commerce.payments","name":"Payments","confidence":1,"provenance":"derived"},{"slug":"commerce.ecommerce","name":"E-commerce Operations","confidence":1,"provenance":"derived"},{"slug":"commerce.pricing","name":"Pricing & Quotes","confidence":1,"provenance":"derived"},{"slug":"content.writing","name":"Writing & Editing","confidence":0.51,"provenance":"derived"},{"slug":"documents.invoice-processing","name":"Invoice Processing","confidence":0.51,"provenance":"derived"},{"slug":"documents.conversion","name":"Document Conversion","confidence":0.51,"provenance":"derived"}],"categories":["commerce","content","documents","media"],"language":"en"},"observed":{"status":"live","statusReason":"Responded 7h ago.","lastOkAt":"2026-10-31T08:23:45.123Z","lastProbedAt":"2026-10-31T08:23:45.123Z","statusComputedAt":"2026-10-31T08:27:00.198Z","reliability30d":{"probes":1,"successRate":1,"p50Ms":1567,"basis":"service","measures":{"availability":"availability","latency":"response time","tools":"tool surface observed","summary":"Checks reached the service itself."},"checks":{"total":1,"ok":1,"authBoundaryOk":0,"serviceOk":1,"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-10-31T08:23:45.123Z","kind":"mcp_initialize","ok":true,"httpStatus":200,"latencyMs":1567,"error":null,"detail":{"tools":[{"name":"ping","description":"Checks that Printdash is reachable and says whether you are signed in. Printdash prints in Australia and delivers within Australia only; prices are in AUD and i"},{"name":"list_products","description":"Every product Printdash sells (business cards, flyers, stickers, labels, booklets, signs, banners and more), with its id, a one-line description, its page and f"},{"name":"search_products","description":"Finds the Printdash products that match the customer's words (\"A5 flyers\", \"round stickers\", \"pull up banner\"), best first. Returns ids for get_product, each wi"},{"name":"get_product","description":"The whole option form for one Printdash product, as its product page offers it: every field in the order to ask, whether it is required, each option's id and la"},{"name":"match_options","description":"Turns the customer's words (\"velvet\", \"A5\", \"double sided\", \"500\", \"90 x 55mm\", \"round corners\") into option ids for one product, given what is already chosen. "},{"name":"get_artwork_guide","description":"Printdash's artwork setup guides as Markdown (bleed and safe zone, print-ready PDFs, colour, double-sided, cut lines, spot finishes, lamination, stocks, white i"},{"name":"get_artwork_requirements","description":"What a print-ready file must be for a product and configuration: finished size, bleed, safe zone, the PDF page size including bleed, pages or sides expected, th"},{"name":"price_job","description":"Prices one exact job with Printdash's pricing engine: a product id and a configuration of option ids (from get_product or match_options). Returns the price ex G"},{"name":"price_quantities","description":"The same job priced at up to 8 quantities (the price ladder), each from Printdash's pricing engine, with the delivered price when an Australian postcode is give"},{"name":"estimate_delivery","description":"Whether Printdash delivers to an Australian postcode (or, signed in, a saved address) and, given the jobs being ordered, the delivery fee and the delivered tota"},{"name":"get_account","description":"Who the signed-in customer is: name, company, pricing tier and its discount in percent (discount_percent 5 means 5% off, already in every price the pricing tool"},{"name":"set_context","description":"Switches the account between buying personally and buying as one of its Teams, as the account menu's Viewing as does on printdash.io. Prices, quotes, orders and"},{"name":"list_addresses","description":"The saved delivery addresses in the current buying context, the default first, with the ids price_job and estimate_delivery take. Needs a signed-in Printdash ac"},{"name":"list_orders","description":"The most recent orders in the current buying context, each with its status as the order page shows it, payment, total, tracking and items. Read only. Needs a si"},{"name":"get_order","description":"One order by its order number: status and payment as the order page shows them, every item with its job status, tracking, dispatch, delivery address, whether it"},{"name":"list_quotes","description":"The most recent saved quotes in the current buying context, each with its status as the Quotes list shows it, total (with delivery, as the Quotes list shows it)"},{"name":"get_quote","description":"One saved quote by its quote number: status, lines with their quoted quantities, the lines' subtotal, delivery and the total with delivery as the quote page sho"},{"name":"create_address","description":"Saves an Australian delivery address to the address book in the current buying context (names, street, suburb, state code, four-digit postcode, optional company"},{"name":"update_address","description":"Changes the fields given on one saved address (from list_addresses); the rest stay. If an order or quote was made with it, the change is saved as a new address "},{"name":"set_default_address","description":"Makes one saved address the default for the current buying context; checkout and new quotes start from it. Needs a signed-in Printdash account: called without o"},{"name":"delete_address","description":"Prepares deleting one saved address: returns the summary to show the customer and a confirmation_token. Nothing is deleted until confirm is called with it after"},{"name":"get_cart","description":"The cart in the current buying context: each line with its line_id, job summary, price inc GST and whether it has artwork, the total before delivery, and the ch"},{"name":"add_to_cart","description":"Prices one job with Printdash's pricing engine (product id and a configuration of option ids, as price_job takes them) and puts it in the cart exactly as the pr"},{"name":"update_cart_line","description":"Changes one cart line's options (only what is given: a new quantity, stock, finish or size) and re-prices it with the pricing engine. A line from a quote Printd"},{"name":"remove_cart_line","description":"Removes one line from the cart by its line_id. Saved quotes are not affected. Needs a signed-in Printdash account: called without one, the connection asks the c"},{"name":"clear_cart","description":"Removes every line from the cart in the current buying context. Saved quotes are not affected. Ask the customer before emptying a cart they did not just fill. N"},{"name":"create_quote","description":"Saves a new quote with a quote number from up to 20 jobs (each a product id and configuration, priced by the engine first), with an optional saved address for d"},{"name":"update_quote","description":"Changes a saved quote in place: lines to change (line_id plus only the options that change) or add (product_id and configuration), lines to remove, the referenc"},{"name":"duplicate_quote","description":"Saves a copy of a quote as a new quote with its own number, every line re-priced today (artwork is not copied). The original is unchanged. Needs a signed-in Pri"},{"name":"delete_quote","description":"Prepares deleting a saved quote for good: returns the summary to show the customer and a confirmation_token. Nothing is deleted until confirm is called with it "},{"name":"share_quote","description":"Makes, or returns the existing, public link for a saved quote: the page where the customer's client can view and approve it, and pay online when allow_payment i"},{"name":"email_quote","description":"Prepares emailing a saved quote's public link to someone (usually the customer's client): returns the summary to show the customer and a confirmation_token. Not"},{"name":"convert_quote_to_order","description":"Puts a saved quote's lines in the cart, as the quote page's Convert to order does, and returns the checkout link. No order is placed: the customer chooses deliv"},{"name":"request_custom_quote","description":"Prepares a custom quote request for a job the catalogue does not cover (description, quantities, size, sides, stock, finishing, deadline, similar product, deliv"},{"name":"list_quote_requests","description":"The customer's custom quote requests in the current buying context, newest first, each with its status as /quotes shows it and the quote it became, if any. Need"},{"name":"get_quote_request","description":"One custom quote request by its request number: what was asked for, its status, whether it can still be cancelled, and the quote it became. Needs a signed-in Pr"},{"name":"cancel_quote_request","description":"Cancels a custom quote request that is still pending review. Needs a signed-in Printdash account: called without one, the connection asks the customer to sign i"},{"name":"get_referral_summary","description":"The customer's referral code and link, how many customers and orders they have referred, their credit balance and commission. Needs a signed-in Printdash accoun"},{"name":"send_invite","description":"Prepares emailing someone an invitation with the customer's referral link: returns the summary to show the customer and a confirmation_token. Nothing is sent un"},{"name":"confirm","description":"Carries out an action prepared by delete_address, delete_quote, email_quote, request_custom_quote, send_invite, prepare_checkout (placing the order), cancel_ord"},{"name":"request_artwork_upload","description":"For a client that holds the file (Claude Code, Cursor, a script): returns a signed upload_url to PUT the file's bytes to, and an upload_id for attach_artwork. t"},{"name":"attach_artwork","description":"After the file has been PUT to request_artwork_upload's upload_url: puts it on the line (in the design and side chosen then, replacing a file already in that sl"},{"name":"attach_artwork_from_url","description":"Fetches the file at an https link (a Canva, Figma or design tool export, Dropbox or Drive download link, a signed storage URL) up to 700 MB and attaches it like"},{"name":"attach_artwork_inline","description":"For programmatic clients only: attaches a file sent as base64 in data_base64, up to 10 MB, like attach_artwork (target, file_name with its extension). Never pas"},{"name":"get_artwork_uploader_link","description":"The printdash.io page whose own uploader takes artwork for this line: checkout for a cart line, the quote page for a saved quote's line, the order page for an o"},{"name":"check_artwork","description":"Runs Printdash's file checks on a line's artwork, the same ones the product page and checkout show: page size against the ordered size, pages against sides or b"},{"name":"get_mockup","description":"The 3D mockup of a line's artwork on the product, as an image. An order job is rendered by Printdash's server and cached; if it is still rendering the result sa"},{"name":"list_artwork","description":"The files on a cart line, quote line or order job, in order, with which file and page is each design's front and back (as the site resolves them), how many desi"},{"name":"remove_artwork","description":"Takes artwork off a line: one design's file (design, and side for one face only), or on a one-design job the front, the back, or (no side) every file. The file "},{"name":"prepare_checkout","description":"Checkout's review of the whole cart in the current buying context, as printdash.io's checkout shows it: every line with its artwork state and Printdash's file n"},{"name":"place_order","description":"Places the order prepare_checkout summarised, after the customer has seen that summary and said yes. Pass its confirmation_token and a new UUID as idempotency_k"},{"name":"cancel_order","description":"Prepares cancelling one order: returns the summary to show the customer and a confirmation_token. Nothing is cancelled until confirm is called with it after the"},{"name":"reorder","description":"Turns one job from a past order (item_id from get_order, where can_reorder is true) back into a configuration and prices it at today's price, optionally at anot"},{"name":"request_reorder","description":"For a job on a past order that Printdash's team priced (reorder_by_request in get_order): prepares the order page's reorder request, at the same or another quan"},{"name":"get_invoice","description":"The tax invoice for one order as a PDF attached to the result, once the order is invoiced (paid, or on a Team's account once approved). Otherwise it says plainl"},{"name":"list_pending_approvals","description":"For a Team owner: every held order of each Team they own, oldest first, with who placed it, the total, whether it is on account, its items and its page. An acco"},{"name":"approve_order","description":"For a Team owner: prepares approving one held order (from list_pending_approvals) and returns the summary to show the customer and a confirmation_token. Nothing"},{"name":"reject_order","description":"For a Team owner: prepares rejecting one held order, with an optional reason the member who placed it is told, and returns the summary to show the customer and "}],"toolCount":58,"toolsHash":"dec1a205db332c6c642d5507f01bf52f52936693b127fa741f6cf1e4e62cd31d","serverName":"printdash","capabilities":["tools","resources","prompts"],"serverVersion":"0.6.0","protocolVersion":"2025-06-18"}}],"tools":[{"name":"ping","description":"Checks that Printdash is reachable and says whether you are signed in. Printdash prints in Australia and delivers within Australia only; prices are in AUD and i"},{"name":"list_products","description":"Every product Printdash sells (business cards, flyers, stickers, labels, booklets, signs, banners and more), with its id, a one-line description, its page and f"},{"name":"search_products","description":"Finds the Printdash products that match the customer's words (\"A5 flyers\", \"round stickers\", \"pull up banner\"), best first. Returns ids for get_product, each wi"},{"name":"get_product","description":"The whole option form for one Printdash product, as its product page offers it: every field in the order to ask, whether it is required, each option's id and la"},{"name":"match_options","description":"Turns the customer's words (\"velvet\", \"A5\", \"double sided\", \"500\", \"90 x 55mm\", \"round corners\") into option ids for one product, given what is already chosen. "},{"name":"get_artwork_guide","description":"Printdash's artwork setup guides as Markdown (bleed and safe zone, print-ready PDFs, colour, double-sided, cut lines, spot finishes, lamination, stocks, white i"},{"name":"get_artwork_requirements","description":"What a print-ready file must be for a product and configuration: finished size, bleed, safe zone, the PDF page size including bleed, pages or sides expected, th"},{"name":"price_job","description":"Prices one exact job with Printdash's pricing engine: a product id and a configuration of option ids (from get_product or match_options). Returns the price ex G"},{"name":"price_quantities","description":"The same job priced at up to 8 quantities (the price ladder), each from Printdash's pricing engine, with the delivered price when an Australian postcode is give"},{"name":"estimate_delivery","description":"Whether Printdash delivers to an Australian postcode (or, signed in, a saved address) and, given the jobs being ordered, the delivery fee and the delivered tota"},{"name":"get_account","description":"Who the signed-in customer is: name, company, pricing tier and its discount in percent (discount_percent 5 means 5% off, already in every price the pricing tool"},{"name":"set_context","description":"Switches the account between buying personally and buying as one of its Teams, as the account menu's Viewing as does on printdash.io. Prices, quotes, orders and"},{"name":"list_addresses","description":"The saved delivery addresses in the current buying context, the default first, with the ids price_job and estimate_delivery take. Needs a signed-in Printdash ac"},{"name":"list_orders","description":"The most recent orders in the current buying context, each with its status as the order page shows it, payment, total, tracking and items. Read only. Needs a si"},{"name":"get_order","description":"One order by its order number: status and payment as the order page shows them, every item with its job status, tracking, dispatch, delivery address, whether it"},{"name":"list_quotes","description":"The most recent saved quotes in the current buying context, each with its status as the Quotes list shows it, total (with delivery, as the Quotes list shows it)"},{"name":"get_quote","description":"One saved quote by its quote number: status, lines with their quoted quantities, the lines' subtotal, delivery and the total with delivery as the quote page sho"},{"name":"create_address","description":"Saves an Australian delivery address to the address book in the current buying context (names, street, suburb, state code, four-digit postcode, optional company"},{"name":"update_address","description":"Changes the fields given on one saved address (from list_addresses); the rest stay. If an order or quote was made with it, the change is saved as a new address "},{"name":"set_default_address","description":"Makes one saved address the default for the current buying context; checkout and new quotes start from it. Needs a signed-in Printdash account: called without o"},{"name":"delete_address","description":"Prepares deleting one saved address: returns the summary to show the customer and a confirmation_token. Nothing is deleted until confirm is called with it after"},{"name":"get_cart","description":"The cart in the current buying context: each line with its line_id, job summary, price inc GST and whether it has artwork, the total before delivery, and the ch"},{"name":"add_to_cart","description":"Prices one job with Printdash's pricing engine (product id and a configuration of option ids, as price_job takes them) and puts it in the cart exactly as the pr"},{"name":"update_cart_line","description":"Changes one cart line's options (only what is given: a new quantity, stock, finish or size) and re-prices it with the pricing engine. A line from a quote Printd"},{"name":"remove_cart_line","description":"Removes one line from the cart by its line_id. Saved quotes are not affected. Needs a signed-in Printdash account: called without one, the connection asks the c"},{"name":"clear_cart","description":"Removes every line from the cart in the current buying context. Saved quotes are not affected. Ask the customer before emptying a cart they did not just fill. N"},{"name":"create_quote","description":"Saves a new quote with a quote number from up to 20 jobs (each a product id and configuration, priced by the engine first), with an optional saved address for d"},{"name":"update_quote","description":"Changes a saved quote in place: lines to change (line_id plus only the options that change) or add (product_id and configuration), lines to remove, the referenc"},{"name":"duplicate_quote","description":"Saves a copy of a quote as a new quote with its own number, every line re-priced today (artwork is not copied). The original is unchanged. Needs a signed-in Pri"},{"name":"delete_quote","description":"Prepares deleting a saved quote for good: returns the summary to show the customer and a confirmation_token. Nothing is deleted until confirm is called with it "},{"name":"share_quote","description":"Makes, or returns the existing, public link for a saved quote: the page where the customer's client can view and approve it, and pay online when allow_payment i"},{"name":"email_quote","description":"Prepares emailing a saved quote's public link to someone (usually the customer's client): returns the summary to show the customer and a confirmation_token. Not"},{"name":"convert_quote_to_order","description":"Puts a saved quote's lines in the cart, as the quote page's Convert to order does, and returns the checkout link. No order is placed: the customer chooses deliv"},{"name":"request_custom_quote","description":"Prepares a custom quote request for a job the catalogue does not cover (description, quantities, size, sides, stock, finishing, deadline, similar product, deliv"},{"name":"list_quote_requests","description":"The customer's custom quote requests in the current buying context, newest first, each with its status as /quotes shows it and the quote it became, if any. Need"},{"name":"get_quote_request","description":"One custom quote request by its request number: what was asked for, its status, whether it can still be cancelled, and the quote it became. Needs a signed-in Pr"},{"name":"cancel_quote_request","description":"Cancels a custom quote request that is still pending review. Needs a signed-in Printdash account: called without one, the connection asks the customer to sign i"},{"name":"get_referral_summary","description":"The customer's referral code and link, how many customers and orders they have referred, their credit balance and commission. Needs a signed-in Printdash accoun"},{"name":"send_invite","description":"Prepares emailing someone an invitation with the customer's referral link: returns the summary to show the customer and a confirmation_token. Nothing is sent un"},{"name":"confirm","description":"Carries out an action prepared by delete_address, delete_quote, email_quote, request_custom_quote, send_invite, prepare_checkout (placing the order), cancel_ord"},{"name":"request_artwork_upload","description":"For a client that holds the file (Claude Code, Cursor, a script): returns a signed upload_url to PUT the file's bytes to, and an upload_id for attach_artwork. t"},{"name":"attach_artwork","description":"After the file has been PUT to request_artwork_upload's upload_url: puts it on the line (in the design and side chosen then, replacing a file already in that sl"},{"name":"attach_artwork_from_url","description":"Fetches the file at an https link (a Canva, Figma or design tool export, Dropbox or Drive download link, a signed storage URL) up to 700 MB and attaches it like"},{"name":"attach_artwork_inline","description":"For programmatic clients only: attaches a file sent as base64 in data_base64, up to 10 MB, like attach_artwork (target, file_name with its extension). Never pas"},{"name":"get_artwork_uploader_link","description":"The printdash.io page whose own uploader takes artwork for this line: checkout for a cart line, the quote page for a saved quote's line, the order page for an o"},{"name":"check_artwork","description":"Runs Printdash's file checks on a line's artwork, the same ones the product page and checkout show: page size against the ordered size, pages against sides or b"},{"name":"get_mockup","description":"The 3D mockup of a line's artwork on the product, as an image. An order job is rendered by Printdash's server and cached; if it is still rendering the result sa"},{"name":"list_artwork","description":"The files on a cart line, quote line or order job, in order, with which file and page is each design's front and back (as the site resolves them), how many desi"},{"name":"remove_artwork","description":"Takes artwork off a line: one design's file (design, and side for one face only), or on a one-design job the front, the back, or (no side) every file. The file "},{"name":"prepare_checkout","description":"Checkout's review of the whole cart in the current buying context, as printdash.io's checkout shows it: every line with its artwork state and Printdash's file n"},{"name":"place_order","description":"Places the order prepare_checkout summarised, after the customer has seen that summary and said yes. Pass its confirmation_token and a new UUID as idempotency_k"},{"name":"cancel_order","description":"Prepares cancelling one order: returns the summary to show the customer and a confirmation_token. Nothing is cancelled until confirm is called with it after the"},{"name":"reorder","description":"Turns one job from a past order (item_id from get_order, where can_reorder is true) back into a configuration and prices it at today's price, optionally at anot"},{"name":"request_reorder","description":"For a job on a past order that Printdash's team priced (reorder_by_request in get_order): prepares the order page's reorder request, at the same or another quan"},{"name":"get_invoice","description":"The tax invoice for one order as a PDF attached to the result, once the order is invoiced (paid, or on a Team's account once approved). Otherwise it says plainl"},{"name":"list_pending_approvals","description":"For a Team owner: every held order of each Team they own, oldest first, with who placed it, the total, whether it is on account, its items and its page. An acco"},{"name":"approve_order","description":"For a Team owner: prepares approving one held order (from list_pending_approvals) and returns the summary to show the customer and a confirmation_token. Nothing"},{"name":"reject_order","description":"For a Team owner: prepares rejecting one held order, with an optional reason the member who placed it is told, and returns the summary to show the customer and "}],"package":null,"toolSurface":{"id":"ts_5cyrvyjpa4ch","endpointId":"ep_phwfjmc8994w","hash":"dec1a205db332c6c642d5507f01bf52f52936693b127fa741f6cf1e4e62cd31d","toolCount":58,"serverName":"printdash","serverVersion":"0.6.0","protocolVersion":"2025-06-18","firstSeenAt":"2026-10-31T08:23:45.118Z","lastSeenAt":"2026-10-31T08:23:45.118Z","observations":1,"toolNames":["ping","list_products","search_products","get_product","match_options","get_artwork_guide","get_artwork_requirements","price_job","price_quantities","estimate_delivery","get_account","set_context","list_addresses","list_orders","get_order","list_quotes","get_quote","create_address","update_address","set_default_address","delete_address","get_cart","add_to_cart","update_cart_line","remove_cart_line","clear_cart","create_quote","update_quote","duplicate_quote","delete_quote","share_quote","email_quote","convert_quote_to_order","request_custom_quote","list_quote_requests","get_quote_request","cancel_quote_request","get_referral_summary","send_invite","confirm","request_artwork_upload","attach_artwork","attach_artwork_from_url","attach_artwork_inline","get_artwork_uploader_link","check_artwork","get_mockup","list_artwork","remove_artwork","prepare_checkout","place_order","cancel_order","reorder","request_reorder","get_invoice","list_pending_approvals","approve_order","reject_order"],"distinctSurfaces":1},"endpointFacts":[{"id":"ep_phwfjmc8994w","url":"https://api.printdash.io/functions/v1/mcp","type":"mcp_streamable_http","factsCheckedAt":"2026-10-31T08:23:45.136Z","auth":{"observedAt":"2026-10-31T08:23:45.165Z","authRequired":false,"scheme":null,"resourceMetadata":null,"authorizationServer":null,"conformance":{"dpop":false,"rfc8414":false,"rfc9728":false,"pkceS256":false,"clientIdMetadataDocument":false,"dynamicClientRegistration":false}},"tls":{"observedAt":"2026-10-31T08:23:45.183Z","protocol":"TLSv1.3","chainValid":true,"chainError":null,"hostMatches":true,"subject":"api.printdash.io","issuer":{"commonName":"WE1","organization":"Google Trust Services"},"validFrom":"2026-10-29T00:05:31.000Z","validTo":"2027-01-27T01:05:29.000Z","daysToExpiry":87,"sanCount":1,"fingerprint256":"72:2A:7F:8D:5B:4A:B1:43:C0:ED:2E:29:13:97:D8:F7:58:11:F0:8D:A2:4F:50:2C:75:C2:AA:D7:3A:B7:7A:89"}}]},"verification":{"claimed":false,"claimedAt":null,"proofs":[]},"provenance":{"sources":[{"source":"mcp_registry","key":"io.printdash/printdash","url":"https://registry.modelcontextprotocol.io/v0/servers/io.printdash%2Fprintdash","firstSeenAt":"2026-10-31T06:22:11.732Z","fetchedAt":"2026-10-31T06:22:11.732Z","normalizedAt":"2026-10-31T06:22:11.732Z"}]},"firstSeenAt":"2026-10-31T06:22:11.732Z","updatedAt":"2026-10-31T08:28:32.693Z"}