Ada Diamonds
Server Details
Live lab grown diamond inventory, engagement ring settings, fine jewelry, and diamond buying guides.
- Status
- Healthy
- Last Tested
- Transport
- Streamable HTTP · MCP 2025-11-25
- URL
TDQS
Scored across 8 tools
Each tool targets a distinct resource and action: diamonds, settings, jewelry, articles, company info, consultations, and checkout. The two product search tools even explicitly note that they must be paired rather than overlapped. No two tools are plausible alternatives for the same task.
All tool names follow a consistent verb_noun snake_case pattern: create_, get_, read_, request_, and search_. The verbs clearly map to actions and the nouns to resources, making the API predictable.
Eight tools is well-scoped for a retail diamond business: product search, knowledge content, company info, checkout, and consultation each have their own tool. Every tool serves a distinct customer-facing function without bloat.
The toolset covers the full purchase journey: search inventory, read buying guides, assemble a cart and pay via checkout, request a consultation, and get company details. The only conceivable minor gap is lack of order-tracking, but that is outside the apparent shopping/consultation scope.
Available Tools
8 toolscreate_checkout_linkCreate a hosted checkout linkAInspect
Assemble a cart and get a Stripe-hosted checkout URL the customer opens to pay; no card data passes through the agent. Item ids come from the search tools (diamond:<report>, setting:<slug>, jewelry:<slug>); a complete ring is one setting plus one diamond. Needs the shipping address (prices tax and shipping into the link). Expires after 24 hours. No credential needed. Without a production credential this tool runs in the sandbox: the link is simulated and no Stripe session is created. Pass env: "production" when the customer actually wants to buy — that returns a live, payable link.
| Name | Required | Description | Default |
|---|---|---|---|
| env | No | sandbox returns a simulated link and creates no Stripe session; production mints a live, payable Stripe Checkout link. Defaults to sandbox for anonymous callers and to the credential's environment otherwise. A sandbox credential is always sandbox. | |
| items | Yes | Items to buy; a complete ring is one setting plus one diamond | |
| context | Yes | Explain in 15-25 words, in third person, why this tool is called and how it supports the user's goal. For analytics only. You MUST describe only the abstract purpose of the tool call. NEVER include, repeat, paraphrase, or infer personal, sensitive, or identifying information from the user request or tool results, including names, emails, phone numbers, IPs, IDs, or credentials. You MUST generalize specific entities into roles such as "a user", "the customer", or "an account". Example: "Retrieving a customer's recent orders to investigate a billing issue and help support determine the appropriate resolution." | |
| llm_model | Yes | The exact model identifier you (the assistant) are running as, taken from your system prompt or environment (e.g. "claude-opus-4-8", "gpt-5.2"). Used for analytics only. If you do not know your model identifier with certainty, pass "unknown" — never guess. | |
| buyer_name | No | Buyer full name | |
| buyer_email | No | Buyer email for the receipt; Stripe collects it on the payment page when omitted | |
| conversation_id | No | Echo the conversation_id from the server's previous response. The server provides it on the first call — never invent one, and do not issue parallel tool calls until you have it. | |
| shipping_address | Yes | Where the order ships; used to price tax and shipping into the link |
Output Schema
| Name | Required | Description |
|---|---|---|
| url | Yes | The Stripe-hosted checkout URL, when ready |
| status | Yes | ready when a payable link was created; needs_input lists what is missing |
| message | Yes | Human-readable outcome, including the link when ready |
| sandbox | Yes | True when the link is simulated (sandbox): nothing is payable and no Stripe session was created. False means the link is live and payable. |
| tax_usd | Yes | Sales tax in US dollars for the given address |
| problems | Yes | What blocks the link when status is needs_input |
| total_usd | Yes | Total the buyer pays in US dollars |
| expires_at | Yes | ISO timestamp the link stops working |
| shipping_usd | Yes | Shipping in US dollars (0 = free insured FedEx) |
| subtotal_usd | Yes | Items subtotal in US dollars |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Discloses several non-obvious behaviors beyond the annotations: no card data passes through the agent, the link expires after 24 hours, no credential is needed, and sandbox mode simulates the link without creating a Stripe session. These are meaningful side-effect and environment semantics that annotations (readOnlyHint=false, destructiveHint=false) do not cover.
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?
Five sentences, front-loaded with the core purpose, and each subsequent sentence adds a distinct fact (item source, cart rule, shipping need, expiry, sandbox/production behavior). No filler.
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?
Covers everything an agent needs to call correctly: item id source and composition, required shipping input, env flag semantics, expiry, credential requirements, and the safety note about card data. The output schema handles return-value documentation, so nothing is missing.
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%, so the baseline is 3. The description adds mild reinforcement: "a complete ring is one setting plus one diamond" and "Needs the shipping address (prices tax and shipping into the link)", clarifying the relationship between items and shipping_address. Most param detail already lives in the schema, so the added value is limited but present.
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?
States a specific verb and resource: "Assemble a cart and get a Stripe-hosted checkout URL the customer opens to pay." It clarifies scope (hosted checkout, no card data through the agent) and distinguishes itself from the search siblings by noting item ids come from them.
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?
Gives clear context for when to call: build a cart from search tool ids, require a complete ring as one setting plus one diamond, and provide the shipping address for tax/shipping pricing. It also specifies the env condition (pass "production" only when the customer actually wants to buy). It does not name an explicit alternative or when-not-to-use, though the purpose is sufficiently distinct from siblings.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_company_infoAda Diamonds company and showroom informationARead-onlyInspect
Contact details, showroom address and hours, how consultations work, and what Ada Diamonds sells. Use this to answer questions about the business rather than about a product.
| Name | Required | Description | Default |
|---|---|---|---|
| context | Yes | Explain in 15-25 words, in third person, why this tool is called and how it supports the user's goal. For analytics only. You MUST describe only the abstract purpose of the tool call. NEVER include, repeat, paraphrase, or infer personal, sensitive, or identifying information from the user request or tool results, including names, emails, phone numbers, IPs, IDs, or credentials. You MUST generalize specific entities into roles such as "a user", "the customer", or "an account". Example: "Retrieving a customer's recent orders to investigate a billing issue and help support determine the appropriate resolution." | |
| section | No | Which part to return as text: contact (phone, email, hours, website), showrooms (addresses and hours), consultations (how remote and in-person consultations work), or all (default). The structured result always carries every section. | all |
| llm_model | Yes | The exact model identifier you (the assistant) are running as, taken from your system prompt or environment (e.g. "claude-opus-4-8", "gpt-5.2"). Used for analytics only. If you do not know your model identifier with certainty, pass "unknown" — never guess. | |
| conversation_id | No | Echo the conversation_id from the server's previous response. The server provides it on the first call — never invent one, and do not issue parallel tool calls until you have it. |
Output Schema
| Name | Required | Description |
|---|---|---|
| name | Yes | Legal company name |
| Yes | Customer email address | |
| hours | Yes | Business hours |
| phone | Yes | Main phone number |
| website | Yes | Website URL |
| showrooms | Yes | Physical showrooms |
| inquiryUrl | Yes | Page where a customer starts a consultation |
| description | Yes | What Ada Diamonds sells and how it works |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, so the safety profile is covered. The description adds no additional behavioral context such as rate limits, auth requirements, or side-effect warnings, which is acceptable given the read-only annotation.
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?
Two sentences with zero filler. The content list is front-loaded, and the usage guidance closes the description efficiently without redundancy.
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?
The description covers purpose and usage boundary, the output schema covers return structure, annotations cover read-only behavior, and the schema covers all parameters. Nothing an agent needs to invoke it correctly is missing.
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 the schema fully explains context, section, llm_model, and conversation_id. The description adds high-level content domains but does not enrich parameter meaning beyond the 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 specific content categories (contact, showroom hours, consultations, what the company sells) and explicitly contrasts with product questions, distinguishing it from sibling search tools. An agent can immediately tell this is the business-information tool.
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?
The description gives explicit usage direction: use for business questions rather than product questions. It does not name the alternative search_* siblings, but the 'rather than about a product' phrasing clearly implies the boundary.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
read_articleRead a knowledge base articleARead-onlyInspect
Fetch the full markdown text of one Ada Diamonds knowledge base article by slug. Use search_knowledge_base first if you don't know the slug.
| Name | Required | Description | Default |
|---|---|---|---|
| slug | Yes | Article slug from search_knowledge_base, e.g. "cvd-lab-diamonds" or "lab-diamond-shapes-guide" | |
| context | Yes | Explain in 15-25 words, in third person, why this tool is called and how it supports the user's goal. For analytics only. You MUST describe only the abstract purpose of the tool call. NEVER include, repeat, paraphrase, or infer personal, sensitive, or identifying information from the user request or tool results, including names, emails, phone numbers, IPs, IDs, or credentials. You MUST generalize specific entities into roles such as "a user", "the customer", or "an account". Example: "Retrieving a customer's recent orders to investigate a billing issue and help support determine the appropriate resolution." | |
| llm_model | Yes | The exact model identifier you (the assistant) are running as, taken from your system prompt or environment (e.g. "claude-opus-4-8", "gpt-5.2"). Used for analytics only. If you do not know your model identifier with certainty, pass "unknown" — never guess. | |
| conversation_id | No | Echo the conversation_id from the server's previous response. The server provides it on the first call — never invent one, and do not issue parallel tool calls until you have it. |
Output Schema
| Name | Required | Description |
|---|---|---|
| url | Yes | Article page URL |
| slug | Yes | The slug that was requested |
| found | Yes | False when no article has that slug |
| title | Yes | Article title, when found |
| excerpt | Yes | One-paragraph summary, when published |
| markdown | Yes | The full article body as markdown, when found |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and openWorldHint=true, covering the safety profile and open-world nature. The description adds that it returns markdown text and is keyed by slug, which is useful but doesn't go beyond what the schema already implies. It doesn't address error behavior, response structure, or any caveats, but given the annotations carry the main burden, a 3 is appropriate.
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?
Two sentences, no filler. The core action and the routing hint are both front-loaded. Every word earns 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?
The tool has a declared output schema, so the return format is handled. The description covers how to obtain the slug, which is the only non-obvious input. The analytics-only parameters (context, llm_model) are self-documented in the schema and don't require description-level detail. Nothing an agent needs to invoke this correctly is missing.
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 all four parameters have detailed descriptions in the input schema. The tool description reinforces the slug parameter's role (pointing to search for it) but adds no new semantic meaning beyond the schema. Baseline 3 is correct when the schema already documents parameters thoroughly.
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 ('Fetch'), a precise resource ('full markdown text of one Ada Diamonds knowledge base article'), and the key discriminator ('by slug'). This clearly distinguishes it from the sibling search_knowledge_base, which is about discovery, not retrieval.
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?
Explicitly instructs the agent to 'Use search_knowledge_base first if you don't know the slug', providing clear routing to the appropriate sibling when the slug is unknown. This is direct and actionable guidance on when to use this tool versus the alternative.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
request_consultationRequest a jeweler consultationAInspect
Submit a consultation request on the customer's behalf. Requires the appointments:write scope, which the customer grants through Ada's OAuth authorization flow — this tool cannot be used without their explicit approval.
| Name | Required | Description | Default |
|---|---|---|---|
| name | No | Customer's name | |
| Yes | Customer's email address; the jeweler replies here | ||
| phone | No | Customer's phone number, if they want a call | |
| topic | No | What the consultation is about | |
| context | Yes | Explain in 15-25 words, in third person, why this tool is called and how it supports the user's goal. For analytics only. You MUST describe only the abstract purpose of the tool call. NEVER include, repeat, paraphrase, or infer personal, sensitive, or identifying information from the user request or tool results, including names, emails, phone numbers, IPs, IDs, or credentials. You MUST generalize specific entities into roles such as "a user", "the customer", or "an account". Example: "Retrieving a customer's recent orders to investigate a billing issue and help support determine the appropriate resolution." | |
| message | No | What the customer is looking for, in their words | |
| llm_model | Yes | The exact model identifier you (the assistant) are running as, taken from your system prompt or environment (e.g. "claude-opus-4-8", "gpt-5.2"). Used for analytics only. If you do not know your model identifier with certainty, pass "unknown" — never guess. | |
| budget_usd | No | Approximate budget in US dollars | |
| product_url | No | URL of a specific diamond, setting, or piece they are interested in | |
| conversation_id | No | Echo the conversation_id from the server's previous response. The server provides it on the first call — never invent one, and do not issue parallel tool calls until you have it. |
Output Schema
| Name | Required | Description |
|---|---|---|
| Yes | The customer email the request was filed under | |
| status | Yes | received when a request was recorded; otherwise why it was not |
| message | Yes | Human-readable outcome, including what to do next |
| sandbox | Yes | True when a sandbox credential was used: nothing was created and nobody was contacted |
| reference | Yes | Request reference, when received |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate this is a non-read, non-destructive operation. The description adds meaningful behavioral context: it requires a specific OAuth scope, cannot be used without customer approval, and is performed on the customer's behalf. It also implicitly warns about authorization failure. It does not describe side effects (e.g., whether a confirmation email is sent), but the OAuth requirement is the most important behavioral trait and is disclosed.
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 description is two sentences and front-loads the core action and the critical authorization requirement. It is concise and every sentence earns its place. The only minor inefficiency is that the OAuth detail could be slightly tighter, but it is essential context, so the length is justified.
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?
Given the tool's complexity (10 params, 1 enum, output schema present), the description covers the most critical operational constraints: authorization, the analytics-only nature of `context` and `llm_model`, and the `conversation_id` sequencing rule. The output schema exists, so return values need not be described. A small gap is that it doesn't mention what happens after submission (e.g., whether the customer receives a confirmation), but the essential calling requirements are covered.
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%, so the schema already documents all 10 parameters. The description adds value by explaining the `context` parameter's strict privacy rules and the `llm_model` parameter's source and fallback behavior, which are not inferable from the schema alone. It also clarifies that `conversation_id` must be echoed from a previous server response and never invented. This goes beyond the schema's basic descriptions.
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 ('Submit'), a clear resource ('a consultation request'), and the actor ('on the customer's behalf'). It also distinguishes itself from siblings by focusing on the consultation-request action, which none of the listed sibling tools do. The title reinforces the purpose without being a tautology.
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?
The description clearly states a prerequisite (the `appointments:write` scope via OAuth) and that the tool cannot be used without explicit customer approval. It does not explicitly name alternative tools or when-not-to-use conditions, but the sibling list makes the alternative context clear enough. A small gap is the lack of explicit 'use this when the customer wants a consultation' guidance, but the purpose is self-evident.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
search_diamondsSearch loose lab diamondsARead-onlyInspect
Search Ada Diamonds' live loose lab grown diamond inventory by shape, carat weight, price, color, clarity, and cut. Returns currently available stones with their grading report numbers and product URLs. Use this for any question about what diamond a budget can buy. MCP Apps-enabled: hosts that support MCP Apps render the results as an interactive card grid.
| Name | Required | Description | Default |
|---|---|---|---|
| cut | No | Cut grade: Ideal, Excellent, or Very Good | |
| sort | No | Result order: price_asc (default relevance), price_desc, carat_asc, or carat_desc | |
| color | No | Color grade, D (colorless) through K | |
| limit | No | Maximum number of results to return, 1 to 50 (default 10) | |
| shape | No | Cut shape: Round, Oval, Cushion, Emerald, Pear, Radiant, Asscher, Princess, or Marquise | |
| clarity | No | Clarity grade: FL, IF, VVS1, VVS2, VS1, VS2, SI1, or SI2 | |
| context | Yes | Explain in 15-25 words, in third person, why this tool is called and how it supports the user's goal. For analytics only. You MUST describe only the abstract purpose of the tool call. NEVER include, repeat, paraphrase, or infer personal, sensitive, or identifying information from the user request or tool results, including names, emails, phone numbers, IPs, IDs, or credentials. You MUST generalize specific entities into roles such as "a user", "the customer", or "an account". Example: "Retrieving a customer's recent orders to investigate a billing issue and help support determine the appropriate resolution." | |
| llm_model | Yes | The exact model identifier you (the assistant) are running as, taken from your system prompt or environment (e.g. "claude-opus-4-8", "gpt-5.2"). Used for analytics only. If you do not know your model identifier with certainty, pass "unknown" — never guess. | |
| max_carat | No | Maximum carat weight, e.g. 2 | |
| max_price | No | Maximum price of the loose stone in US dollars | |
| min_carat | No | Minimum carat weight, e.g. 1 or 1.5 | |
| min_price | No | Minimum price of the loose stone in US dollars | |
| conversation_id | No | Echo the conversation_id from the server's previous response. The server provides it on the first call — never invent one, and do not issue parallel tool calls until you have it. |
Output Schema
| Name | Required | Description |
|---|---|---|
| kind | Yes | Which catalog the results come from |
| items | Yes | The matching entries, best match first |
| query | Yes | The filters that were applied (only the ones you sent) |
| shown | Yes | How many entries are in `items` |
| total | Yes | How many catalog entries matched before the limit |
| browseUrl | Yes | Web page listing the full catalog for this search |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and openWorldHint=true, so the safety profile is covered. The description adds value by disclosing that results are 'currently available stones' (live inventory), that it returns grading report numbers and product URLs, and that MCP Apps hosts render results as an interactive card grid. This goes beyond the annotations without contradicting them.
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 description is three sentences and front-loads the core purpose and scope. The first sentence is dense but efficient. The second sentence gives a clear usage cue. The third sentence about MCP Apps is useful but slightly tangential to the core invocation logic; it earns its place as behavioral context but could be trimmed. Overall, no wasted words.
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 search tool with 13 parameters, 100% schema coverage, an output schema, and read-only annotations, the description covers the essential invocation context: what is searched, what filters apply, what results contain, and when to use it. The only minor gap is that it doesn't explain the default sort behavior beyond what the schema already states, but the schema covers that. The description is complete enough for an agent to select and call the tool correctly.
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 the schema already documents all 13 parameters. The description adds a little context by naming the filter dimensions (shape, carat, price, color, clarity, cut) and noting the sort default ('price_asc (default relevance)'), but it doesn't add meaning beyond what the schema provides. Baseline 3 is appropriate.
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 ('Search'), a specific resource ('Ada Diamonds' live loose lab grown diamond inventory'), and enumerates the filter dimensions (shape, carat, price, color, clarity, cut). It also distinguishes itself from siblings by focusing on loose lab-grown diamonds and budget-based queries, which separates it from search_engagement_rings and search_jewelry.
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?
The description explicitly says 'Use this for any question about what diamond a budget can buy,' which gives clear context for when to invoke it. It doesn't explicitly name alternatives or exclusions, but the sibling list and the phrase 'loose lab grown diamond inventory' imply when other tools (e.g., search_engagement_rings, search_jewelry) would be more appropriate. A clear when-to-use is present, but no explicit when-not-to-use.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
search_engagement_ringsSearch engagement ring settingsARead-onlyInspect
Search Ada Diamonds' engagement ring settings by center-stone shape, style, and setting price. Setting prices exclude the center diamond — pair with search_diamonds to quote a complete ring. MCP Apps-enabled: hosts that support MCP Apps render the results as an interactive card grid.
| Name | Required | Description | Default |
|---|---|---|---|
| q | No | Free-text match on the setting name | |
| type | No | Setting type, e.g. Solitaire, Halo, Three Stone | |
| limit | No | Maximum number of results to return, 1 to 50 (default 10) | |
| shape | No | Center-stone shape the setting must accommodate, e.g. Oval | |
| style | No | Design style, e.g. Petite Four Prong, Trellis, Bezel | |
| context | Yes | Explain in 15-25 words, in third person, why this tool is called and how it supports the user's goal. For analytics only. You MUST describe only the abstract purpose of the tool call. NEVER include, repeat, paraphrase, or infer personal, sensitive, or identifying information from the user request or tool results, including names, emails, phone numbers, IPs, IDs, or credentials. You MUST generalize specific entities into roles such as "a user", "the customer", or "an account". Example: "Retrieving a customer's recent orders to investigate a billing issue and help support determine the appropriate resolution." | |
| llm_model | Yes | The exact model identifier you (the assistant) are running as, taken from your system prompt or environment (e.g. "claude-opus-4-8", "gpt-5.2"). Used for analytics only. If you do not know your model identifier with certainty, pass "unknown" — never guess. | |
| max_price | No | Maximum setting price in US dollars, excluding the center diamond | |
| min_price | No | Minimum setting price in US dollars, excluding the center diamond | |
| conversation_id | No | Echo the conversation_id from the server's previous response. The server provides it on the first call — never invent one, and do not issue parallel tool calls until you have it. |
Output Schema
| Name | Required | Description |
|---|---|---|
| kind | Yes | Which catalog the results come from |
| items | Yes | The matching entries, best match first |
| query | Yes | The filters that were applied (only the ones you sent) |
| shown | Yes | How many entries are in `items` |
| total | Yes | How many catalog entries matched before the limit |
| browseUrl | Yes | Web page listing the full catalog for this search |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint and openWorldHint, so the safety profile is covered. The description adds useful private behavior: results are setting-only with prices excluding diamonds, and rendering may become an interactive card grid in MCP Apps-enabled hosts. No contradiction with 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?
Three sentences, each earning its place: purpose and filters, price-scope caveat with sibling pairing, and the MCP Apps rendering note. The core action is front-loaded with no filler or redundancy.
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 10-parameter tool, the description covers the key domain decision logic (settings vs. complete ring, pairing with search_diamonds) while the full schema documents every parameter and an output schema exists. The only minor gap is no guidance on the analytics-only parameters (context, llm_model), but those are fully described in the schema.
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%, so the baseline is 3. The description additionally clarifies that min_price and max_price values exclude the center diamond, which is meaningful domain semantics beyond the raw schema text, and it ties shape/style/price to the search behavior.
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 opens with a specific verb and resource, "Search Ada Diamonds' engagement ring settings," and enumerates the filter dimensions (shape, style, price), immediately distinguishing it from sibling tools like search_diamonds and search_jewelry. It clearly identifies this as the settings-specific search, not a general jewelry query.
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?
The description gives concrete usage context: settings prices exclude the center diamond and should be paired with search_diamonds for a complete ring quote. It does not explicitly state when not to use this tool or name alternative searches by condition, but the pairing guidance and scope are enough for an agent to route correctly.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
search_jewelrySearch fine jewelryARead-onlyInspect
Search Ada Diamonds' fine jewelry — wedding bands, earrings, necklaces, bracelets, and fashion rings — by category, type, diamond shape, and price. MCP Apps-enabled: hosts that support MCP Apps render the results as an interactive card grid.
| Name | Required | Description | Default |
|---|---|---|---|
| q | No | Free-text match on the product name | |
| type | No | Type, e.g. Wedding Bands, Earrings, Necklaces, Bracelets, Rings | |
| limit | No | Maximum number of results to return, 1 to 50 (default 10) | |
| shape | No | Diamond shape used in the piece, e.g. Round | |
| context | Yes | Explain in 15-25 words, in third person, why this tool is called and how it supports the user's goal. For analytics only. You MUST describe only the abstract purpose of the tool call. NEVER include, repeat, paraphrase, or infer personal, sensitive, or identifying information from the user request or tool results, including names, emails, phone numbers, IPs, IDs, or credentials. You MUST generalize specific entities into roles such as "a user", "the customer", or "an account". Example: "Retrieving a customer's recent orders to investigate a billing issue and help support determine the appropriate resolution." | |
| category | No | Category: Bridal or Fashion | |
| llm_model | Yes | The exact model identifier you (the assistant) are running as, taken from your system prompt or environment (e.g. "claude-opus-4-8", "gpt-5.2"). Used for analytics only. If you do not know your model identifier with certainty, pass "unknown" — never guess. | |
| max_price | No | Maximum price in US dollars | |
| min_price | No | Minimum price in US dollars | |
| conversation_id | No | Echo the conversation_id from the server's previous response. The server provides it on the first call — never invent one, and do not issue parallel tool calls until you have it. |
Output Schema
| Name | Required | Description |
|---|---|---|
| kind | Yes | Which catalog the results come from |
| items | Yes | The matching entries, best match first |
| query | Yes | The filters that were applied (only the ones you sent) |
| shown | Yes | How many entries are in `items` |
| total | Yes | How many catalog entries matched before the limit |
| browseUrl | Yes | Web page listing the full catalog for this search |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and openWorldHint=true, covering safety and dynamic results. The description adds the MCP Apps rendering behavior (interactive card grid), which is a meaningful behavioral trait beyond the annotations. It does not contradict the annotations and provides useful context about how results are presented on supporting hosts.
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?
Two tight sentences: the first front-loads the core purpose and filter scope, the second adds a value-added rendering note. No wasted words or redundancy. The description earns its space efficiently.
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?
The tool has an output schema, so return format is already defined. The description covers the search scope, filterable attributes, and rendering behavior, and the annotations handle safety and open-world semantics. It does not explicitly explain pagination via conversation_id, but that is documented in the schema; overall it is complete enough for an agent to call correctly.
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. The description adds a summary of the main filter dimensions (category, type, diamond shape, price) that map to existing schema fields, but it does not add syntax, formatting, or behavioral nuance beyond what the schema provides. This meets the baseline but adds little extra meaning.
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 uses a specific verb 'Search' with a clear resource ('Ada Diamonds' fine jewelry') and enumerates the item types (wedding bands, earrings, necklaces, bracelets, fashion rings) plus the filtering dimensions (category, type, diamond shape, price). This makes its scope distinct from siblings like search_diamonds (loose diamonds) and search_engagement_rings (a subset), even though it doesn't name them explicitly.
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?
The description implies the tool is for finished fine jewelry pieces rather than loose diamonds or specific subsets, but it does not explicitly state when to use it versus siblings such as search_diamonds or search_engagement_rings. There are no exclusions or alternative-routing cues beyond the item list, so an agent must infer usage from the resource naming.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
search_knowledge_baseSearch Ada Diamonds guidesARead-onlyInspect
Search Ada Diamonds' published guides on lab grown diamonds — the 4Cs, CVD vs HPHT growth, shape guides, certification, and buying advice. Returns article summaries and markdown URLs. Use read_article to get an article's full text.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Maximum number of results to return, 1 to 25 (default 8) | |
| query | Yes | Topic to search for, matched against article titles, summaries, and slugs | |
| context | Yes | Explain in 15-25 words, in third person, why this tool is called and how it supports the user's goal. For analytics only. You MUST describe only the abstract purpose of the tool call. NEVER include, repeat, paraphrase, or infer personal, sensitive, or identifying information from the user request or tool results, including names, emails, phone numbers, IPs, IDs, or credentials. You MUST generalize specific entities into roles such as "a user", "the customer", or "an account". Example: "Retrieving a customer's recent orders to investigate a billing issue and help support determine the appropriate resolution." | |
| llm_model | Yes | The exact model identifier you (the assistant) are running as, taken from your system prompt or environment (e.g. "claude-opus-4-8", "gpt-5.2"). Used for analytics only. If you do not know your model identifier with certainty, pass "unknown" — never guess. | |
| conversation_id | No | Echo the conversation_id from the server's previous response. The server provides it on the first call — never invent one, and do not issue parallel tool calls until you have it. |
Output Schema
| Name | Required | Description |
|---|---|---|
| kind | Yes | Always "articles" |
| items | Yes | Matching articles |
| query | Yes | The search terms that were used |
| total | Yes | How many articles are in `items` |
| browseUrl | Yes | Web page listing every guide |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and openWorldHint=true, so the agent knows this is a safe, non-mutating search. The description adds that it returns article summaries and markdown URLs, which is useful behavioral context beyond the annotations. However, it doesn't disclose pagination behavior, result ordering, or what happens with no results. With annotations covering the safety profile, a 3 is appropriate.
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?
Two sentences with zero waste. The first sentence front-loads the tool's purpose and scope, and the second provides a clear pointer to the sibling tool for the next step. Every word earns 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?
The description is complete for a search tool: it states what it searches, what it returns (summaries and markdown URLs), and how to get full text. The output schema exists, so return values don't need explanation. Minor gaps like result ordering and pagination are not critical for an agent to invoke this tool correctly. The only slight gap is not explicitly distinguishing from search_diamonds, but the topic scope makes it clear.
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 the schema already documents all 5 parameters thoroughly. The description adds context about what 'query' matches against (article titles, summaries, and slugs) and that results include summaries and URLs, which slightly enriches the schema. But the description doesn't add meaning beyond what the schema provides for the other parameters (context, llm_model, conversation_id, limit). Baseline 3 is correct when schema does the heavy lifting.
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 ('Search'), a specific resource ('Ada Diamonds' published guides on lab grown diamonds'), and enumerates the covered topics (4Cs, CVD vs HPHT, shape guides, certification, buying advice). It also distinguishes itself from read_article by noting it returns summaries and URLs while read_article provides full text. This clearly differentiates it from siblings like search_diamonds and search_engagement_rings.
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?
The description explicitly says to use read_article to get an article's full text, which provides a clear alternative for a follow-up action. It implies this tool is for finding/summarizing articles rather than reading them fully. However, it doesn't explicitly state when NOT to use this tool versus other search siblings (e.g., search_diamonds for product searches), though the topic scope makes this reasonably clear.
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.
8 tool updates
- Changed
create_checkout_link4 fields changed- added
Input schema / properties / contextAdded value: +{ + "description": "Explain in 15-25 words, in third person, why this tool is called and how it supports the user's goal. For analytics only. You MUST describe only the abstract purpose of the tool call. NEVER include, repeat, paraphrase, or infer personal, sensitive, or identifying information from the user request or tool results, including names, emails, phone numbers, IPs, IDs, or credentials. You MUST generalize specific entities into roles such as \"a user\", \"the customer\", or \"an account\". Example: \"Retrieving a customer's recent orders to investigate a billing issue and help support determine the appropriate resolution.\"", + "type": "string" +} - added
Input schema / properties / conversation_idAdded value: +{ + "description": "Echo the conversation_id from the server's previous response. The server provides it on the first call — never invent one, and do not issue parallel tool calls until you have it.", + "type": "string" +} - added
Input schema / properties / llm_modelAdded value: +{ + "description": "The exact model identifier you (the assistant) are running as, taken from your system prompt or environment (e.g. \"claude-opus-4-8\", \"gpt-5.2\"). Used for analytics only. If you do not know your model identifier with certainty, pass \"unknown\" — never guess.", + "type": "string" +} - changed
Input schema / requiredPrevious value: -[ - "items", - "shipping_address" -]New value: +[ + "items", + "shipping_address", + "context", + "llm_model" +]
- Changed
get_company_info4 fields changed- added
Input schema / properties / contextAdded value: +{ + "description": "Explain in 15-25 words, in third person, why this tool is called and how it supports the user's goal. For analytics only. You MUST describe only the abstract purpose of the tool call. NEVER include, repeat, paraphrase, or infer personal, sensitive, or identifying information from the user request or tool results, including names, emails, phone numbers, IPs, IDs, or credentials. You MUST generalize specific entities into roles such as \"a user\", \"the customer\", or \"an account\". Example: \"Retrieving a customer's recent orders to investigate a billing issue and help support determine the appropriate resolution.\"", + "type": "string" +} - added
Input schema / properties / conversation_idAdded value: +{ + "description": "Echo the conversation_id from the server's previous response. The server provides it on the first call — never invent one, and do not issue parallel tool calls until you have it.", + "type": "string" +} - added
Input schema / properties / llm_modelAdded value: +{ + "description": "The exact model identifier you (the assistant) are running as, taken from your system prompt or environment (e.g. \"claude-opus-4-8\", \"gpt-5.2\"). Used for analytics only. If you do not know your model identifier with certainty, pass \"unknown\" — never guess.", + "type": "string" +} - added
Input schema / requiredAdded value: +[ + "context", + "llm_model" +]
- Changed
read_article4 fields changed- added
Input schema / properties / contextAdded value: +{ + "description": "Explain in 15-25 words, in third person, why this tool is called and how it supports the user's goal. For analytics only. You MUST describe only the abstract purpose of the tool call. NEVER include, repeat, paraphrase, or infer personal, sensitive, or identifying information from the user request or tool results, including names, emails, phone numbers, IPs, IDs, or credentials. You MUST generalize specific entities into roles such as \"a user\", \"the customer\", or \"an account\". Example: \"Retrieving a customer's recent orders to investigate a billing issue and help support determine the appropriate resolution.\"", + "type": "string" +} - added
Input schema / properties / conversation_idAdded value: +{ + "description": "Echo the conversation_id from the server's previous response. The server provides it on the first call — never invent one, and do not issue parallel tool calls until you have it.", + "type": "string" +} - added
Input schema / properties / llm_modelAdded value: +{ + "description": "The exact model identifier you (the assistant) are running as, taken from your system prompt or environment (e.g. \"claude-opus-4-8\", \"gpt-5.2\"). Used for analytics only. If you do not know your model identifier with certainty, pass \"unknown\" — never guess.", + "type": "string" +} - changed
Input schema / requiredPrevious value: -[ - "slug" -]New value: +[ + "slug", + "context", + "llm_model" +]
- Changed
request_consultation4 fields changed- added
Input schema / properties / contextAdded value: +{ + "description": "Explain in 15-25 words, in third person, why this tool is called and how it supports the user's goal. For analytics only. You MUST describe only the abstract purpose of the tool call. NEVER include, repeat, paraphrase, or infer personal, sensitive, or identifying information from the user request or tool results, including names, emails, phone numbers, IPs, IDs, or credentials. You MUST generalize specific entities into roles such as \"a user\", \"the customer\", or \"an account\". Example: \"Retrieving a customer's recent orders to investigate a billing issue and help support determine the appropriate resolution.\"", + "type": "string" +} - added
Input schema / properties / conversation_idAdded value: +{ + "description": "Echo the conversation_id from the server's previous response. The server provides it on the first call — never invent one, and do not issue parallel tool calls until you have it.", + "type": "string" +} - added
Input schema / properties / llm_modelAdded value: +{ + "description": "The exact model identifier you (the assistant) are running as, taken from your system prompt or environment (e.g. \"claude-opus-4-8\", \"gpt-5.2\"). Used for analytics only. If you do not know your model identifier with certainty, pass \"unknown\" — never guess.", + "type": "string" +} - changed
Input schema / requiredPrevious value: -[ - "email" -]New value: +[ + "email", + "context", + "llm_model" +]
- Changed
search_diamonds5 fields changed- removed
Input schema / additionalPropertiesRemoved value: -false - added
Input schema / properties / contextAdded value: +{ + "description": "Explain in 15-25 words, in third person, why this tool is called and how it supports the user's goal. For analytics only. You MUST describe only the abstract purpose of the tool call. NEVER include, repeat, paraphrase, or infer personal, sensitive, or identifying information from the user request or tool results, including names, emails, phone numbers, IPs, IDs, or credentials. You MUST generalize specific entities into roles such as \"a user\", \"the customer\", or \"an account\". Example: \"Retrieving a customer's recent orders to investigate a billing issue and help support determine the appropriate resolution.\"", + "type": "string" +} - added
Input schema / properties / conversation_idAdded value: +{ + "description": "Echo the conversation_id from the server's previous response. The server provides it on the first call — never invent one, and do not issue parallel tool calls until you have it.", + "type": "string" +} - added
Input schema / properties / llm_modelAdded value: +{ + "description": "The exact model identifier you (the assistant) are running as, taken from your system prompt or environment (e.g. \"claude-opus-4-8\", \"gpt-5.2\"). Used for analytics only. If you do not know your model identifier with certainty, pass \"unknown\" — never guess.", + "type": "string" +} - added
Input schema / requiredAdded value: +[ + "context", + "llm_model" +]
- Changed
search_engagement_rings5 fields changed- removed
Input schema / additionalPropertiesRemoved value: -false - added
Input schema / properties / contextAdded value: +{ + "description": "Explain in 15-25 words, in third person, why this tool is called and how it supports the user's goal. For analytics only. You MUST describe only the abstract purpose of the tool call. NEVER include, repeat, paraphrase, or infer personal, sensitive, or identifying information from the user request or tool results, including names, emails, phone numbers, IPs, IDs, or credentials. You MUST generalize specific entities into roles such as \"a user\", \"the customer\", or \"an account\". Example: \"Retrieving a customer's recent orders to investigate a billing issue and help support determine the appropriate resolution.\"", + "type": "string" +} - added
Input schema / properties / conversation_idAdded value: +{ + "description": "Echo the conversation_id from the server's previous response. The server provides it on the first call — never invent one, and do not issue parallel tool calls until you have it.", + "type": "string" +} - added
Input schema / properties / llm_modelAdded value: +{ + "description": "The exact model identifier you (the assistant) are running as, taken from your system prompt or environment (e.g. \"claude-opus-4-8\", \"gpt-5.2\"). Used for analytics only. If you do not know your model identifier with certainty, pass \"unknown\" — never guess.", + "type": "string" +} - added
Input schema / requiredAdded value: +[ + "context", + "llm_model" +]
- Changed
search_jewelry5 fields changed- removed
Input schema / additionalPropertiesRemoved value: -false - added
Input schema / properties / contextAdded value: +{ + "description": "Explain in 15-25 words, in third person, why this tool is called and how it supports the user's goal. For analytics only. You MUST describe only the abstract purpose of the tool call. NEVER include, repeat, paraphrase, or infer personal, sensitive, or identifying information from the user request or tool results, including names, emails, phone numbers, IPs, IDs, or credentials. You MUST generalize specific entities into roles such as \"a user\", \"the customer\", or \"an account\". Example: \"Retrieving a customer's recent orders to investigate a billing issue and help support determine the appropriate resolution.\"", + "type": "string" +} - added
Input schema / properties / conversation_idAdded value: +{ + "description": "Echo the conversation_id from the server's previous response. The server provides it on the first call — never invent one, and do not issue parallel tool calls until you have it.", + "type": "string" +} - added
Input schema / properties / llm_modelAdded value: +{ + "description": "The exact model identifier you (the assistant) are running as, taken from your system prompt or environment (e.g. \"claude-opus-4-8\", \"gpt-5.2\"). Used for analytics only. If you do not know your model identifier with certainty, pass \"unknown\" — never guess.", + "type": "string" +} - added
Input schema / requiredAdded value: +[ + "context", + "llm_model" +]
- Changed
search_knowledge_base4 fields changed- added
Input schema / properties / contextAdded value: +{ + "description": "Explain in 15-25 words, in third person, why this tool is called and how it supports the user's goal. For analytics only. You MUST describe only the abstract purpose of the tool call. NEVER include, repeat, paraphrase, or infer personal, sensitive, or identifying information from the user request or tool results, including names, emails, phone numbers, IPs, IDs, or credentials. You MUST generalize specific entities into roles such as \"a user\", \"the customer\", or \"an account\". Example: \"Retrieving a customer's recent orders to investigate a billing issue and help support determine the appropriate resolution.\"", + "type": "string" +} - added
Input schema / properties / conversation_idAdded value: +{ + "description": "Echo the conversation_id from the server's previous response. The server provides it on the first call — never invent one, and do not issue parallel tool calls until you have it.", + "type": "string" +} - added
Input schema / properties / llm_modelAdded value: +{ + "description": "The exact model identifier you (the assistant) are running as, taken from your system prompt or environment (e.g. \"claude-opus-4-8\", \"gpt-5.2\"). Used for analytics only. If you do not know your model identifier with certainty, pass \"unknown\" — never guess.", + "type": "string" +} - changed
Input schema / requiredPrevious value: -[ - "query" -]New value: +[ + "query", + "context", + "llm_model" +]
4 tool updates
- Changed
create_checkout_link2 fields changed- added
Input schema / properties / envAdded value: +{ + "description": "sandbox returns a simulated link and creates no Stripe session; production mints a live, payable Stripe Checkout link. Defaults to sandbox for anonymous callers and to the credential's environment otherwise. A sandbox credential is always sandbox.", + "enum": [ + "production", + "sandbox" + ], + "type": "string" +} - changed
Output schema / properties / sandbox / descriptionPrevious value: -"True on a sandbox credential: the link is simulated and nothing is payable"New value: +"True when the link is simulated (sandbox): nothing is payable and no Stripe session was created. False means the link is live and payable."
- Changed
search_diamonds1 field changed- added
Input schema / additionalPropertiesAdded value: +false
- Changed
search_engagement_rings1 field changed- added
Input schema / additionalPropertiesAdded value: +false
- Changed
search_jewelry1 field changed- added
Input schema / additionalPropertiesAdded value: +false
1 tool update
- Added
create_checkout_link
7 tool updates
- First observed
get_company_info - First observed
read_article - First observed
request_consultation - First observed
search_diamonds - First observed
search_engagement_rings - First observed
search_jewelry - First observed
search_knowledge_base
Related MCP Connectors
Stienhardt (NYC): shop live Lab Grown Diamonds, engagement rings, jewelry. Search, cart, checkout.
Search and price made-to-order rings, jewelry, and lab-grown diamonds from the 25karats catalog.
Live fine-jewelry catalog: search, product lookup, compatible chains, size/length variants, store po
AI jewelry photography: retouching, virtual try-on, and product video generation.
Related MCP Servers
- AlicenseAqualityAmaintenanceProvides diamond education tools for AI assistants, including grading report verification, face-up size estimation, and market price index, all backed by sourced and dated facts.81MIT

FITINY Moissanite Toolsofficial
AlicenseNot gradedqualityCmaintenanceJewellery sizing and gemstone grading tools by FITINY. Carat-to-millimetre conversion for moissanite, diamond and cubic zirconia corrected for each stone's density — every chart online is calculated for diamond, which is wrong for moissanite by about 9%. Also covers GIA colour (D-K) and clarity (FL-SI) scales, ISO 8653 ring size conversion across US/UK/EU, necklace lengths and stud diameter.MIT
costkits-mcpofficial
AlicenseAqualityBmaintenanceProvides live US healthcare cost data including procedure cost estimates, provider pricing, insurance coverage rules, and medical bill analysis using real hospital transparency and CMS data.1246 npmMIT- AlicenseAqualityDmaintenanceFranchise evaluation tools built from 81+ closed deals. Validate FDD investment ranges, identify red flags, assess readiness, and connect with a free franchise consultant. E-2 visa guide in English and Spanish.86 npmMIT
Glama MCP Gateway
Add one secure layer between your agents and this server.