Ada Diamonds
Server Details
Live lab grown diamond inventory, engagement ring settings, fine jewelry, and diamond buying guides.
- Status
- Healthy
- Uptime
- 100.0% over 59 days
- Last Tested
- Transport
- Streamable HTTP · MCP 2025-11-25
- URL
TDQS
Scored across 8 tools
Each tool has a clearly distinct role: separate search tools for diamonds, engagement ring settings, fine jewelry, and knowledge base, plus distinct checkout, consultation, company-info, and article-reading tools. The descriptions explicitly clarify boundaries such as settings excluding center diamonds and jewelry covering non-engagement categories.
All tool names use consistent snake_case with a verb_noun pattern: create_checkout_link, get_company_info, read_article, request_consultation, and four search_* tools. No mixed conventions or vague verbs.
Eight tools are well-scoped for a diamond retailer's conversational commerce surface. Each tool earns its place by covering search, knowledge, checkout, consultation, and business info without redundancy.
The surface covers the core buying journey: inventory search, setting pairing, fine jewelry browsing, knowledge lookup, company info, checkout, and consultation. Minor gaps exist around order status, returns, or post-purchase support, but agents can work around them via knowledge base or company info.
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?
Annotations only say readOnly=false and destructive=false; the description adds materially more — no card data touches the agent, links expire after 24 hours, no credential required, and a full disclosure that without a production credential the tool silently degrades to a simulated sandbox link with no Stripe session. That last point is exactly the kind of trap an agent needs warned about.
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?
Front-loaded with the action and outcome, then scoping details. It is dense but nearly every clause carries decision-relevant information; the env explanation partially duplicates the already-thorough schema field description, which is the only real waste.
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 an 8-parameter mutation tool with nested objects and a production/sandbox fork, the description covers inputs, prerequisites, degradation behavior, and lifetime. Output schema exists, so return-value detail is correctly omitted.
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 goes beyond the schema by explaining item id namespacing and the ring-composition rule (one setting + one diamond) plus why shipping_address is required (tax and shipping pricing), which the schema only partly conveys.
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?
Opens with a concrete verb and resource: assemble a cart, return a Stripe-hosted checkout URL. It also states the negative scope ('no card data passes through the agent'), which immediately separates it from the search_* siblings and from request_consultation.
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 names where item ids come from (the search tools, with id formats), states that a complete ring is one setting plus one diamond, requires a shipping address, and gives a decision rule for env: 'Pass env: "production" when the customer actually wants to buy.' When-to-use and how-to-choose are both spelled out.
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, so the safety profile is covered. The description usefully adds the return format (full markdown text), but says nothing about failure behavior for missing/invalid slugs or rate limits. Adequate but not rich beyond structured fields.
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, front-loaded with the core action and followed by the alternative-routing guidance. Zero wasted text.
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?
A simple read tool with an output schema, 100% schema coverage, and annotations covering safety. Purpose, input sourcing, and alternative routing are all present; 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 documents all four parameters including the slug's provenance and the analytics params. The description reinforces that the slug comes from search_knowledge_base, but adds no syntax or format detail beyond the schema. 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?
States a specific verb (fetch), resource (one Ada Diamonds knowledge base article), scope (by slug), and return format (full markdown text). An agent can distinguish it from search_knowledge_base without opening either schema.
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 names the alternative (search_knowledge_base) and the condition that selects it ("if you don't know the slug"). Nothing about when to call this vs the sibling is left to inference.
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?
Beyond the annotations, the description adds critical behavioral context: the tool requires the `appointments:write` scope and cannot be used without the customer's explicit OAuth approval. It does not contradict the annotations, though it could say more about what happens after submission.
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 focused sentences with zero waste. The purpose is front-loaded, followed immediately by the authorization prerequisite.
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 rich schema coverage, annotations, and an output schema, the description provides enough context for correct invocation. Its only meaningful gap is the absence of explicit guidance on when to use this tool versus sibling search or checkout tools.
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 10 parameters, including required fields and the enum for `topic`. The description adds no parameter-specific meaning beyond what the schema provides, making the baseline 3 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 and resource: 'Submit a consultation request on the customer's behalf.' This clearly identifies the action and object, though it does not explicitly distinguish the tool from siblings such as create_checkout_link or 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 implies usage by saying it submits a consultation request on the customer's behalf, and it adds an important OAuth prerequisite. However, it does not state when to choose this tool over alternatives or when not to use it, leaving routing guidance largely implied.
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 and openWorldHint, so the safety profile is covered. The description adds genuinely new behavior: it returns live available stones with grading report numbers and product URLs, and it discloses MCP Apps host rendering into an interactive card grid — a trait not visible in any structured field.
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 tight sentences: capability and filters first, return shape second, usage and host-rendering note last. No filler, and the most decision-relevant content is front-loaded.
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 13 params, full schema coverage, an output schema, and annotations, the description covers purpose, return content, usage, and UI behavior adequately. It omits any mention of pagination/limit behavior and the analytics-only context/llm_model parameters, but the schema fully documents those, so the gap is minor.
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 all 13 parameters, including enums and limits, are already documented in the schema. The description restates the filter dimensions (shape, carat, price, color, clarity, cut) without adding format, default, or interaction details beyond what the schema provides, so baseline 3 applies.
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 ('search ... live loose lab grown diamond inventory') and enumerates the filterable dimensions, which implicitly separates it from search_jewelry and search_engagement_rings. It stops short of an explicit contrast with those siblings, leaving some ambiguity for a query like 'find a diamond ring under $5k'.
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?
'Use this for any question about what diamond a budget can buy' gives a clear positive usage condition tied to budget-driven browsing. No exclusion is given for when to prefer the ring/jewelry siblings instead, so the routing is clear but not complete.
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, e.g. "east west bezel"; typo tolerant, best match first | |
| 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?
Goes beyond the readOnly/openWorld annotations by disclosing the price-composition rule (setting only, no center stone) and the rendering behavior on MCP Apps hosts (interactive card grid). Missing items: pagination limits and what conversation_id enables, though the schema covers the latter.
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 tight sentences: purpose first, then the commercial caveat and pairing, then the rendering note. Nothing redundant or padded.
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?
An output schema exists and return values don't need explaining; the description still flags the card-grid rendering, which helps set expectations. Combined with annotations and full schema coverage, an agent has enough to invoke 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 coverage is 100%, so all ten parameters are self-documented; the description's price-exclusion note largely repeats what min_price/max_price already say. No added meaning for q, type, shape, or style 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?
Names a specific verb and resource ('search engagement ring settings') plus the discovery axes (shape, style, price), which separates it from search_diamonds and the broader search_jewelry. An agent can route to it without opening the schema.
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 states the pairing pattern: setting prices exclude the center diamond, so quote a complete ring via search_diamonds. That is clear context, but there is no explicit 'use this instead of search_jewelry when...' exclusion.
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, e.g. "east west bezel"; typo tolerant, best match first | |
| 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 cover the safety profile (readOnlyHint, openWorldHint), so the bar is lower. The description adds a genuinely non-structured behavioral trait: hosts supporting MCP Apps render results as an interactive card grid, which affects how the agent should present the response. It does not mention result caps/pagination beyond the schema, but the schema already states the 1-50 limit.
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, zero filler, and the core purpose plus covered product families are front-loaded before the rendering caveat. Nothing repeats the title or the schema.
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?
An output schema exists, so return-value explanation is not needed, and the annotations and 100% schema coverage carry most of the remaining burden. What is missing is disambiguation from sibling search tools and any note on result ordering or empty-result behavior, which matters for a 10-parameter search with openWorld semantics.
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 baseline is 3; every parameter including the unusual context/llm_model/conversation_id contract is fully documented in the schema. The description only echoes the facet names (category, type, diamond shape, price) without adding format or matching semantics beyond what the schema says.
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 ('Search Ada Diamonds' fine jewelry') and enumerates the product families covered plus the filter dimensions. It never distinguishes itself from the close siblings search_diamonds and search_engagement_rings, so the boundary of 'jewelry' versus 'loose stones' or 'engagement rings' is left implicit.
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?
Usage is implied by the listed facets (category, type, shape, price) which tells the agent this is the faceted catalog-search tool. There is no explicit when-to-use/when-not guidance, and with three overlapping search siblings in the tool list, the agent gets no rule for choosing among them.
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 and openWorldHint, so safety is covered; the description adds that results are summaries plus markdown URLs rather than full content, which is a real behavioral constraint driving the read_article handoff. It adds nothing about ranking, coverage limits, or empty-result behavior.
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 short sentences with zero filler: what it searches, what it returns, and where to go next. The most decision-relevant information (scope of content) is front-loaded.
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?
An output schema exists so return values need no explanation, and annotations cover the safety profile; the description still supplies the one thing the structured data cannot — that this is a summaries-only index paired with read_article. Nothing needed to call 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%, including limit bounds and the oddly specific context/llm_model/conversation_id requirements, so the schema carries all parameter meaning. The description only implies that the query is topical, adding no syntax, matching behavior, or query-construction guidance 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?
States a specific verb (search) and a precisely bounded resource (Ada Diamonds' published guides), then enumerates the content domains covered — 4Cs, CVD vs HPHT, shapes, certification, buying advice. This clearly separates it from the product-oriented siblings like search_diamonds and search_jewelry without the agent needing to open schemas.
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 an explicit next-step rule: use read_article to get an article's full text, which tells the agent when this tool's output is insufficient. It lacks an explicit exclusion statement for the other search_* siblings (diamonds, jewelry, rings), relying on the content-domain wording to imply the split.
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.
7 tool updates
- Changed
create_checkout_link4 fields changed- removed
Output schema / properties / expires_at / anyOfRemoved value: -[ - { - "type": "string" - }, - { - "type": "null" - } -] - added
Output schema / properties / expires_at / typeAdded value: +[ + "string", + "null" +] - removed
Output schema / properties / url / anyOfRemoved value: -[ - { - "type": "string" - }, - { - "type": "null" - } -] - added
Output schema / properties / url / typeAdded value: +[ + "string", + "null" +]
- Changed
read_article6 fields changed- removed
Output schema / properties / excerpt / anyOfRemoved value: -[ - { - "type": "string" - }, - { - "type": "null" - } -] - added
Output schema / properties / excerpt / typeAdded value: +[ + "string", + "null" +] - removed
Output schema / properties / markdown / anyOfRemoved value: -[ - { - "type": "string" - }, - { - "type": "null" - } -] - added
Output schema / properties / markdown / typeAdded value: +[ + "string", + "null" +] - removed
Output schema / properties / title / anyOfRemoved value: -[ - { - "type": "string" - }, - { - "type": "null" - } -] - added
Output schema / properties / title / typeAdded value: +[ + "string", + "null" +]
- Changed
request_consultation4 fields changed- removed
Output schema / properties / email / anyOfRemoved value: -[ - { - "type": "string" - }, - { - "type": "null" - } -] - added
Output schema / properties / email / typeAdded value: +[ + "string", + "null" +] - removed
Output schema / properties / reference / anyOfRemoved value: -[ - { - "type": "string" - }, - { - "type": "null" - } -] - added
Output schema / properties / reference / typeAdded value: +[ + "string", + "null" +]
- Changed
search_diamonds18 fields changed- removed
Output schema / properties / items / items / properties / carat / anyOfRemoved value: -[ - { - "type": "number" - }, - { - "type": "null" - } -] - added
Output schema / properties / items / items / properties / carat / typeAdded value: +[ + "number", + "null" +] - removed
Output schema / properties / items / items / properties / certificate / anyOfRemoved value: -[ - { - "type": "string" - }, - { - "type": "null" - } -] - added
Output schema / properties / items / items / properties / certificate / typeAdded value: +[ + "string", + "null" +] - removed
Output schema / properties / items / items / properties / clarity / anyOfRemoved value: -[ - { - "type": "string" - }, - { - "type": "null" - } -] - added
Output schema / properties / items / items / properties / clarity / typeAdded value: +[ + "string", + "null" +] - removed
Output schema / properties / items / items / properties / color / anyOfRemoved value: -[ - { - "type": "string" - }, - { - "type": "null" - } -] - added
Output schema / properties / items / items / properties / color / typeAdded value: +[ + "string", + "null" +] - removed
Output schema / properties / items / items / properties / cut / anyOfRemoved value: -[ - { - "type": "string" - }, - { - "type": "null" - } -] - added
Output schema / properties / items / items / properties / cut / typeAdded value: +[ + "string", + "null" +] - removed
Output schema / properties / items / items / properties / lab / anyOfRemoved value: -[ - { - "type": "string" - }, - { - "type": "null" - } -] - added
Output schema / properties / items / items / properties / lab / typeAdded value: +[ + "string", + "null" +] - removed
Output schema / properties / items / items / properties / measurements / anyOfRemoved value: -[ - { - "type": "string" - }, - { - "type": "null" - } -] - added
Output schema / properties / items / items / properties / measurements / typeAdded value: +[ + "string", + "null" +] - removed
Output schema / properties / items / items / properties / price / anyOfRemoved value: -[ - { - "type": "number" - }, - { - "type": "null" - } -] - added
Output schema / properties / items / items / properties / price / typeAdded value: +[ + "number", + "null" +] - removed
Output schema / properties / items / items / properties / shape / anyOfRemoved value: -[ - { - "type": "string" - }, - { - "type": "null" - } -] - added
Output schema / properties / items / items / properties / shape / typeAdded value: +[ + "string", + "null" +]
- Changed
search_engagement_rings9 fields changed- changed
Output schema / properties / items / items / properties / image / anyOfPrevious value: -[ - { - "additionalProperties": false, - "properties": { - "alt": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ], - "description": "Alt text, when the catalog has one" - }, - "url": { - "description": "Image URL on the Ada Diamonds CDN", - "type": "string" - } - }, - "required": [ - "url", - "alt" - ], - "type": "object" - }, - { - "type": "null" - } -]New value: +[ + { + "additionalProperties": false, + "properties": { + "alt": { + "description": "Alt text, when the catalog has one", + "type": [ + "string", + "null" + ] + }, + "url": { + "description": "Image URL on the Ada Diamonds CDN", + "type": "string" + } + }, + "required": [ + "url", + "alt" + ], + "type": "object" + }, + { + "type": "null" + } +] - removed
Output schema / properties / items / items / properties / platinumUpcharge / anyOfRemoved value: -[ - { - "type": "number" - }, - { - "type": "null" - } -] - added
Output schema / properties / items / items / properties / platinumUpcharge / typeAdded value: +[ + "number", + "null" +] - removed
Output schema / properties / items / items / properties / priceFrom / anyOfRemoved value: -[ - { - "type": "number" - }, - { - "type": "null" - } -] - added
Output schema / properties / items / items / properties / priceFrom / typeAdded value: +[ + "number", + "null" +] - removed
Output schema / properties / items / items / properties / style / anyOfRemoved value: -[ - { - "type": "string" - }, - { - "type": "null" - } -] - added
Output schema / properties / items / items / properties / style / typeAdded value: +[ + "string", + "null" +] - removed
Output schema / properties / items / items / properties / type / anyOfRemoved value: -[ - { - "type": "string" - }, - { - "type": "null" - } -] - added
Output schema / properties / items / items / properties / type / typeAdded value: +[ + "string", + "null" +]
- Changed
search_jewelry9 fields changed- removed
Output schema / properties / items / items / properties / category / anyOfRemoved value: -[ - { - "type": "string" - }, - { - "type": "null" - } -] - added
Output schema / properties / items / items / properties / category / typeAdded value: +[ + "string", + "null" +] - changed
Output schema / properties / items / items / properties / image / anyOfPrevious value: -[ - { - "additionalProperties": false, - "properties": { - "alt": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ], - "description": "Alt text, when the catalog has one" - }, - "url": { - "description": "Image URL on the Ada Diamonds CDN", - "type": "string" - } - }, - "required": [ - "url", - "alt" - ], - "type": "object" - }, - { - "type": "null" - } -]New value: +[ + { + "additionalProperties": false, + "properties": { + "alt": { + "description": "Alt text, when the catalog has one", + "type": [ + "string", + "null" + ] + }, + "url": { + "description": "Image URL on the Ada Diamonds CDN", + "type": "string" + } + }, + "required": [ + "url", + "alt" + ], + "type": "object" + }, + { + "type": "null" + } +] - removed
Output schema / properties / items / items / properties / priceFrom / anyOfRemoved value: -[ - { - "type": "number" - }, - { - "type": "null" - } -] - added
Output schema / properties / items / items / properties / priceFrom / typeAdded value: +[ + "number", + "null" +] - removed
Output schema / properties / items / items / properties / priceMax / anyOfRemoved value: -[ - { - "type": "number" - }, - { - "type": "null" - } -] - added
Output schema / properties / items / items / properties / priceMax / typeAdded value: +[ + "number", + "null" +] - removed
Output schema / properties / items / items / properties / type / anyOfRemoved value: -[ - { - "type": "string" - }, - { - "type": "null" - } -] - added
Output schema / properties / items / items / properties / type / typeAdded value: +[ + "string", + "null" +]
- Changed
search_knowledge_base2 fields changed- removed
Output schema / properties / items / items / properties / excerpt / anyOfRemoved value: -[ - { - "type": "string" - }, - { - "type": "null" - } -] - added
Output schema / properties / items / items / properties / excerpt / typeAdded value: +[ + "string", + "null" +]
2 tool updates
- Changed
search_engagement_rings1 field changed- changed
Input schema / properties / q / descriptionPrevious value: -"Free-text match on the setting name"New value: +"Free text, e.g. \"east west bezel\"; typo tolerant, best match first"
- Changed
search_jewelry1 field changed- changed
Input schema / properties / q / descriptionPrevious value: -"Free-text match on the product name"New value: +"Free text, e.g. \"east west bezel\"; typo tolerant, best match first"
1 tool update
- Changed
create_checkout_link1 field changed- added
Input schema / properties / items / maxItemsAdded value: +20
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
Latest prices for one certified diamond across 100+ retailers: search, cert lookup, market prices.
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

costkits-mcpofficial
AlicenseAqualityCmaintenanceProvides 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.1256 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.84 npmMIT
- AlicenseAqualityAmaintenanceDomain search that returns only .com names verified available to register, checked live against the Verisign RDAP registry, not AI guess lists.3MIT
Glama MCP Gateway
Add one secure layer between your agents and this server.