MagSnap — Custom Photo Magnets & Gift Printing Store
Server Details
Check custom photo magnet pack pricing, delivery lead times, and create instant orders.
- Status
- Healthy
- Last Tested
- Transport
- Streamable HTTP · MCP 2025-11-25
- URL
TDQS
Scored across 5 tools
Each tool targets a distinct intent: browsing catalog (get_products), reading policy/spec info (get_store_faq), pricing math (calculate_quote), conversion (create_checkout_link), and post-purchase lookup (track_order). calculate_quote and create_checkout_link share the same optional parameters, but their outputs (a computed price vs. a cart URL) and stated purposes are clearly separated.
All five names follow a uniform snake_case verb_noun pattern (calculate_quote, create_checkout_link, get_products, get_store_faq, track_order) with no casing or style deviations. The verb vocabulary (get/calculate/create/track) is conventional and predictable.
Five tools is well-scoped for a single-brand print-on-demand storefront, and each one earns its place in the browse-to-checkout-to-track funnel. There is no visible filler or trivially redundant tool.
The buy-side lifecycle is covered end to end: discover products, answer policy questions, quote, check out, and track. Minor gaps remain around post-purchase support (no order history by email, cancel/refund, or contact/complaint path), which an agent would have to work around via get_store_faq.
Available Tools
5 toolscalculate_quoteCalculate QuoteARead-onlyIdempotentInspect
Calculate an instant order quote for MagSnap photo magnets including item costs, AI 3D cartoon styling surcharge (+R5/ea), gift wrap (+R50), and courier delivery in South Africa. When to use: Call this tool when you specifically need to execute 'calculate_quote' on MagSnap Custom Photo Magnets (magsnap.co.za). Do NOT use this tool when another specialized tool fits better (use 'get_products' or 'create_checkout_link' or 'track_order' for their respective operations). Parameters: single_magnet_count (optional), ai_styled_count (optional), puzzle_set_count (optional), is_gift (optional). Behavior & Side Effects: Strictly read-only, idempotent query with zero state mutation; public unauthenticated access allowed; rate-limited to 60 requests/min per IP. Returns: Structured JSON object containing status, matched records or computed metrics, and canonical action URLs.
| Name | Required | Description | Default |
|---|---|---|---|
| is_gift | No | Whether premium gift packaging is requested (+R50 fee). [Optional: omit to use server default filter]. | |
| ai_styled_count | No | Number of magnets with 3D Pixar/cartoon AI style transformation (+R5 surcharge each, R35 total). | |
| puzzle_set_count | No | Number of 9-piece puzzle magnet sets (R270 each). [Optional: omit to use server default filter]. | |
| single_magnet_count | No | Number of standard custom square photo magnets (R30 each). [Optional: omit to use server default filter]. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover readOnly, idempotent, non-destructive, and openWorld, so the description's added value here is the rate limit (60 requests/min per IP) and public unauthenticated access, both of which are non-obvious operational facts an agent should know before retrying in a loop. It does not disclose whether the quoted prices can go stale or how rounding/currency is handled, keeping it below 5.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The pricing sentence is well front-loaded and earns its place, but the 'When to use / Do NOT use / Parameters / Behavior & Side Effects / Returns' scaffolding is boilerplate that restates the schema and annotations. The closing 'Returns' sentence is generic filler ('status, matched records or computed metrics, and canonical action URLs') that tells the agent little about a quote response.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description owes the agent a clearer picture of the return value, and it delivers only a vague template rather than confirming that the response is a priced breakdown with a total. The pricing rules it does state (surcharges, gift wrap, courier in South Africa) are genuinely useful and partially compensate, but the return-shape gap and the missing statement that all four counts default to zero leave it merely adequate.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so every parameter is already documented with type, fee amount, and optionality; the baseline of 3 applies. The description merely lists the four parameter names as '(optional)' without adding semantics beyond the schema, and it omits the per-unit base price (R30) that the schema supplies for single_magnet_count.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The opening sentence states a specific verb (calculate) and resource (instant order quote) and enumerates the priced components: item costs, AI 3D styling surcharge, gift wrap, and courier delivery in South Africa. That is far more informative than the tautological title. It stops short of 5 because the second sentence degrades into templated self-reference ('when you specifically need to execute calculate_quote').
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It explicitly names the siblings to avoid (get_products, create_checkout_link, track_order) and frames this as a pricing-only operation, which is real routing guidance. However, it only says to use them 'for their respective operations' without stating the discriminating condition, so the agent has to infer when a quote is wanted versus a product listing or checkout link.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_checkout_linkCreate Checkout LinkAInspect
Generate a pre-filled direct cart checkout link for magsnap.co.za so the customer can upload their photos and complete payment via PayFast. When to use: Call this tool when you specifically need to execute 'create_checkout_link' on MagSnap Custom Photo Magnets (magsnap.co.za). Do NOT use this tool when another specialized tool fits better (use 'get_products' or 'calculate_quote' or 'track_order' for their respective operations). Parameters: single_magnet_count (optional), ai_styled_count (optional), puzzle_set_count (optional), is_gift (optional). Behavior & Side Effects: Creates a live record/session in the backend database; no authentication required for public initiation; rate-limited to 60 requests/min per IP. Returns: Structured JSON object containing status, matched records or computed metrics, and canonical action URLs.
| Name | Required | Description | Default |
|---|---|---|---|
| is_gift | No | Whether to enable gift packaging (+R50). [Optional: omit to use server default filter]. | |
| ai_styled_count | No | Number of magnets with 3D Pixar/cartoon AI styling. [Optional: omit to use server default filter]. | |
| puzzle_set_count | No | Number of 9-piece puzzle magnet sets (R270 each). [Optional: omit to use server default filter]. | |
| single_magnet_count | No | Number of standard custom square photo magnets (R30 each). [Optional: omit to use server default filter]. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=false, idempotentHint=false and openWorldHint=true, so the mutation profile is covered. The description still adds real value beyond that: live backend record creation, no auth required, and a 60 req/min per-IP rate limit. A minor deduction for the vague 'matched records or computed metrics' return phrasing, which doesn't match a link-generation tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The behavior/rate-limit sentence earns its place and is front-loaded after purpose, but the 'When to use' block is boilerplate restating the tool name and the return-value sentence is generic template text ('matched records or computed metrics') that doesn't fit this tool.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description does supply a return shape and the key side effects (record creation, auth, rate limit). Sufficient for an agent to call it confidently; the only gap is the imprecise description of what the returned link/URL actually looks like.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% and each parameter already carries pricing and defaulting semantics, so the description only echoes the parameter names in a list. No additional meaning (unit constraints, interaction between counts, minimum order) is contributed.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The opening sentence names a specific verb (generate) and resource (pre-filled direct cart checkout link for magsnap.co.za) plus the payment path (PayFast), which is enough to tell it apart from quote/product/order tools. The follow-on 'Call this tool when you specifically need to execute create_checkout_link' is a tautological restatement that adds nothing.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It names the siblings (get_products, calculate_quote, track_order) but only says 'use them for their respective operations' rather than stating the actual selection condition, e.g. 'call calculate_quote first if the customer wants a price before paying'. The exclusion guidance is implied by name rather than spelled out.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_productsGet ProductsARead-onlyIdempotentInspect
Fetch all available MagSnap photo magnet products, categories, pricing, and specs in South Africa (ZAR). When to use: Call this tool when you specifically need to execute 'get_products' on MagSnap Custom Photo Magnets (magsnap.co.za). Do NOT use this tool when another specialized tool fits better (use 'calculate_quote' or 'create_checkout_link' or 'track_order' for their respective operations). Parameters: category_id (optional). Behavior & Side Effects: Strictly read-only, idempotent query with zero state mutation; public unauthenticated access allowed; rate-limited to 60 requests/min per IP. Returns: Structured JSON object containing status, matched records or computed metrics, and canonical action URLs.
| Name | Required | Description | Default |
|---|---|---|---|
| category_id | No | Optional category ID to filter products by (e.g. 1 for Photo Magnets, 2 for Puzzles). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, and destructiveHint=false, so the safety profile is covered. The description adds genuinely new context: public unauthenticated access and a rate limit of 60 requests/min per IP, plus what the response contains. It does not disclose pagination or result-size limits for an unbounded list query.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The lead sentence is well front-loaded, but the 'When to use: Call this tool when you specifically need to execute get_products' sentence is filler that repeats the tool name, and the Returns sentence is generic boilerplate. Roughly a third of the text earns nothing.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema and only one optional parameter, the definition covers purpose, access model, rate limits, and return shape, which is close to sufficient. What is missing is scope/volume guidance for an unfiltered 'fetch all' call, which matters for an openWorld list tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% and the schema itself supplies concrete examples (1 for Photo Magnets, 2 for Puzzles). The description only repeats that category_id is optional, adding no syntax or behavioral meaning such as whether omitting it returns all categories.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The first sentence states a specific verb and resource ('Fetch all available MagSnap photo magnet products, categories, pricing, and specs') plus a currency/region scope. It is clearly distinguishable from quote/checkout/order tools, though the sibling differentiation is partly handled by boilerplate in the second sentence.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It names the alternatives (calculate_quote, create_checkout_link, track_order) but gives no conditions that select between them, saying only 'for their respective operations'. The 'when to use' clause largely restates the tool name rather than describing a real user situation.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_store_faqGet Store FaqARead-onlyIdempotentInspect
Retrieve official MagSnap product specifications, material durability, production turnaround, and courier delivery policies across South Africa. When to use: Call this tool when you specifically need to execute 'get_store_faq' on MagSnap Custom Photo Magnets (magsnap.co.za). Do NOT use this tool when another specialized tool fits better (use 'get_products' or 'calculate_quote' or 'create_checkout_link' for their respective operations). Parameters: topic (optional). Behavior & Side Effects: Strictly read-only, idempotent query with zero state mutation; public unauthenticated access allowed; rate-limited to 60 requests/min per IP. Returns: Structured JSON object containing status, matched records or computed metrics, and canonical action URLs.
| Name | Required | Description | Default |
|---|---|---|---|
| topic | No | Specific FAQ topic or 'all' for complete store overview. [Optional: omit to use server default filter]. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly, idempotent, non-destructive, and openWorld, so the safety profile is covered. The description adds genuinely new facts: public unauthenticated access, a 60 req/min per-IP rate limit, and a rough return shape (status, matched records, canonical action URLs), which is useful context an agent cannot get from the annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The opening sentence is well-front-loaded and dense with real information, but the 'When to use' clause is self-referential filler and the parameters sentence merely echoes the schema. Roughly a third of the text does not earn its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a single-optional-param, read-only lookup with no output schema, the definition covers purpose, safety/rate-limit behavior, access model, and a rough return description—enough for an agent to call it correctly. Only the circular usage trigger and lack of concrete topic-to-content mapping keep it from full marks.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% and the single 'topic' parameter is a documented enum with per-value semantics, so the schema carries the load. The description only restates 'topic (optional)' without adding meaning beyond the schema, which is the expected baseline when coverage is full.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The first sentence states a specific verb (Retrieve) and a concrete resource scope: product specs, material durability, turnaround, and courier policies for MagSnap in South Africa. It is distinguishable from quote/checkout/product-listing siblings, though differentiation leans on the later 'Do NOT use' sentence rather than the purpose statement itself.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is an explicit 'When to use' / 'Do NOT use' structure that names alternatives (get_products, calculate_quote, create_checkout_link), which is above-average intent. However, the positive trigger is circular—'when you specifically need to execute get_store_faq'—so the agent gets routing exclusions but no real positive condition beyond the purpose sentence.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
track_orderTrack OrderARead-onlyIdempotentInspect
Look up order status and shipping progress for an existing MagSnap order by Order ID. When to use: Call this tool when you specifically need to execute 'track_order' on MagSnap Custom Photo Magnets (magsnap.co.za). Do NOT use this tool when another specialized tool fits better (use 'get_products' or 'calculate_quote' or 'create_checkout_link' for their respective operations). Parameters: order_id (required). Behavior & Side Effects: Strictly read-only, idempotent query with zero state mutation; public unauthenticated access allowed; rate-limited to 60 requests/min per IP. Returns: Structured JSON object containing status, matched records or computed metrics, and canonical action URLs.
| Name | Required | Description | Default |
|---|---|---|---|
| order_id | Yes | The MagSnap Order ID (UUID format, e.g. 9b1deb4d-3b7d-4bad-9bdd-2b0d7b3dcb6d). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The annotations already declare read-only, idempotent, non-destructive behavior, and the description adds useful operational context: unauthenticated public access and a 60 requests/min per IP rate limit. It also confirms zero state mutation, though the return-value summary is somewhat generic.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The purpose is front-loaded, which is good, but the description contains redundant boilerplate such as 'Call this tool when you specifically need to execute track_order' and a generic alternatives sentence. It is not excessively long, but several phrases do not earn their place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple one-parameter read-only tool with rich annotations and no output schema, the description covers purpose, usage, access model, rate limits, and a basic return description. It could be more precise about return fields and sibling-tool boundaries, but it is largely complete for correct invocation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, and the schema already documents order_id as a UUID-formatted string with an example. The description only restates that order_id is required and identified by Order ID, adding no real semantics beyond the structured schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb and resource: 'Look up order status and shipping progress' for an existing MagSnap order by Order ID. It names sibling alternatives, but the contrast is generic ('for their respective operations') rather than explaining precise boundaries.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It includes a 'When to use' section and a 'Do NOT use' sentence naming other tools, so some routing guidance is present. However, the when-to-use text is largely tautological ('execute track_order') and does not give concrete conditions for choosing this tool over the alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
3 tool updates
- Changed
calculate_quote3 fields changed- changed
Input schema / properties / is_gift / descriptionPrevious value: -"Whether premium gift packaging is requested (+R50 fee)."New value: +"Whether premium gift packaging is requested (+R50 fee). [Optional: omit to use server default filter]." - changed
Input schema / properties / puzzle_set_count / descriptionPrevious value: -"Number of 9-piece puzzle magnet sets (R270 each)."New value: +"Number of 9-piece puzzle magnet sets (R270 each). [Optional: omit to use server default filter]." - changed
Input schema / properties / single_magnet_count / descriptionPrevious value: -"Number of standard custom square photo magnets (R30 each)."New value: +"Number of standard custom square photo magnets (R30 each). [Optional: omit to use server default filter]."
- Changed
create_checkout_link4 fields changed- changed
Input schema / properties / ai_styled_count / descriptionPrevious value: -"Number of magnets with 3D Pixar/cartoon AI styling."New value: +"Number of magnets with 3D Pixar/cartoon AI styling. [Optional: omit to use server default filter]." - changed
Input schema / properties / is_gift / descriptionPrevious value: -"Whether to enable gift packaging (+R50)."New value: +"Whether to enable gift packaging (+R50). [Optional: omit to use server default filter]." - changed
Input schema / properties / puzzle_set_count / descriptionPrevious value: -"Number of 9-piece puzzle magnet sets (R270 each)."New value: +"Number of 9-piece puzzle magnet sets (R270 each). [Optional: omit to use server default filter]." - changed
Input schema / properties / single_magnet_count / descriptionPrevious value: -"Number of standard custom square photo magnets (R30 each)."New value: +"Number of standard custom square photo magnets (R30 each). [Optional: omit to use server default filter]."
- Changed
get_store_faq1 field changed- changed
Input schema / properties / topic / descriptionPrevious value: -"Specific FAQ topic or 'all' for complete store overview."New value: +"Specific FAQ topic or 'all' for complete store overview. [Optional: omit to use server default filter]."
5 tool updates
- First observed
calculate_quote - First observed
create_checkout_link - First observed
get_products - First observed
get_store_faq - First observed
track_order
Related MCP Connectors
Live prices, options and shipping quotes for custom-printed promotional products.
Live prices in USD, options and shipping quotes for custom-printed promotional products.
Configure, price, proof and add custom print products to a Smartpress cart. US printing, no login.
Live prices, options and shipping quotes in GBP for custom-printed promotional products.
Related MCP Servers
- AlicenseAqualityDmaintenanceSend real physical postcards worldwide via AI agents. Supports single and bulk send (up to 500 recipients), balance checking, delivery tracking, and volume pricing from $0.72/card.56 npm5MIT
- AlicenseNot gradedqualityCmaintenanceEnables image-to-sticker generation by sending a photo and choosing a curated style, producing die-cut stickers without any prompt.MIT

OpenPrints MCPofficial
AlicenseNot gradedqualityDmaintenanceEnables AI agents to browse products, upload designs, place print orders, track shipments, and manage account balance via natural language.2 npmMIT- AlicenseNot gradedqualityBmaintenanceEnables agents to create and pay for physical postcards and letters, returning print previews and Stripe checkout links, with human review before USPS First-Class mailing to US addresses.MIT
Glama MCP Gateway
Add one secure layer between your agents and this server.