Server definition
- Hash
- sha256:08e8454ed53ef30ce1aed4f66632b56ab8b37121ab7ff6c8eae5bc6777570bb5
- What it is
- What a remote MCP server returned when asked what it offers: 5 tools
The blob, as servednamed by its sha256
{
"instructions": "Dinilu Print+Promo — B2B custom-printed promotional products.\n\nThis endpoint is bound to ONE domain and language: dinilu.eu, language \"en\", prices in EUR, sold from Netherlands.\nOther domains and languages are separate endpoints (e.g. https://dinilu.eu/en/mcp).\nDo not translate prices or assume another currency.\n\nWorkflow: search_products -> get_product (read the attribute and option ids)\n-> get_quote (pass those ids in \"attributes\").\n\nEvery quote is indicative and excludes VAT and shipping; \"binding\" is always false.\nMinimum order quantities apply and quantities below the MOQ are raised silently,\nso ALWAYS read the \"warnings\" array before repeating a price to anyone. An\nattribute you do not supply is filled with the product default and reported as\nan attribute_defaulted warning — a default can be wrong for the customer at a\nprice that is right.\n\nTo turn a quote into a real quotation, give the customer the \"cart_url\" from the\nquote result. They complete checkout and enter their own company details. Never\ncollect a customer's address, VAT number or contact details yourself, and never\nappend them to a URL.",
"tools": [
{
"description": "Compatibility fetch for research clients that require a tool named \"fetch\". Returns one product as readable text. It carries NO price: prices depend on quantity and options and come from get_quote.",
"inputSchema": {
"additionalProperties": false,
"properties": {
"id": {
"description": "The id returned by search (the product mpn, as a string).",
"type": "string"
}
},
"required": [
"id"
],
"type": "object"
},
"name": "fetch",
"outputSchema": {
"properties": {
"content": {
"type": "string"
},
"id": {
"type": "string"
},
"metadata": {
"type": "object"
},
"text": {
"type": "string"
},
"title": {
"type": "string"
},
"url": {
"type": "string"
}
},
"required": [
"id",
"title",
"text",
"url"
],
"type": "object"
}
},
{
"description": "Get a product's configurable attributes and their options, plus its minimum order quantity and quantity step. Call this before get_quote: the attribute and option ids it returns are what get_quote expects.",
"inputSchema": {
"additionalProperties": false,
"properties": {
"mpn": {
"description": "Product MPN, from search_products or from the mpn field in a product page's JSON-LD.",
"type": "integer"
}
},
"required": [
"mpn"
],
"type": "object"
},
"name": "get_product",
"outputSchema": null
},
{
"description": "Price a specific configuration and quantity, with production time and shipping options. Indicative, excludes VAT and shipping, never binding. Read the returned \"warnings\" before presenting the price.",
"inputSchema": {
"additionalProperties": false,
"properties": {
"attributes": {
"additionalProperties": {
"type": [
"integer",
"string"
]
},
"description": "Option selection as {\"<attribute id>\": <option id>}, e.g. {\"19\": 251, \"58\": 490}. Both ids come from get_product. Option NAMES are also accepted as values but must match exactly, including double spaces, and are translated per domain — prefer ids. Any attribute you omit is filled with the product default and reported in warnings.",
"type": "object"
},
"country": {
"description": "Destination country for shipping rates. Accepts a name (\"Germany\"), ISO 3166-1 alpha-2 (\"DE\"), alpha-3 (\"DEU\") or numeric (\"276\"). Defaults to this domain's country.",
"type": "string"
},
"mpn": {
"description": "Product MPN.",
"type": "integer"
},
"qty": {
"description": "Quantity in PIECES. Below the product minimum it is raised to the MOQ and a qty_below_minimum warning is returned. Omitting it quotes the product default and warns — always pass the real target quantity, because price per piece changes substantially with volume.",
"type": "integer"
},
"zone": {
"description": "Optional zone/state id, where shipping rates depend on it.",
"type": "integer"
}
},
"required": [
"mpn"
],
"type": "object"
},
"name": "get_quote",
"outputSchema": null
},
{
"description": "Compatibility search for research clients that require a tool named \"search\". Returns only id, title and URL. Prefer search_products, which also filters by category and returns the category of each hit.",
"inputSchema": {
"additionalProperties": false,
"properties": {
"query": {
"description": "Free text matched against the product title.",
"type": "string"
}
},
"required": [
"query"
],
"type": "object"
},
"name": "search",
"outputSchema": {
"properties": {
"ids": {
"items": {
"type": "string"
},
"type": "array"
},
"results": {
"items": {
"properties": {
"id": {
"type": "string"
},
"title": {
"type": "string"
},
"url": {
"type": "string"
}
},
"required": [
"id",
"title",
"url"
],
"type": "object"
},
"type": "array"
}
},
"required": [
"results"
],
"type": "object"
}
},
{
"description": "Find products in this catalogue by free text and/or category. Returns mpn, title, page URL and category for each match. The mpn is what get_product and get_quote take.",
"inputSchema": {
"additionalProperties": false,
"properties": {
"category": {
"description": "Taxonomy term id to filter by. Read the category tree from the dinilu://categories resource.",
"type": "integer"
},
"limit": {
"description": "Maximum results to return. Default 50, maximum 200.",
"type": "integer"
},
"query": {
"description": "Free text matched against the product title, case-insensitive. Omit to list everything (optionally narrowed by category).",
"type": "string"
}
},
"type": "object"
},
"name": "search_products",
"outputSchema": null
}
]
}Verify it yourself
curl -s https://api.teppi.xyz/v1/evidence/sha256:08e8454ed53ef30ce1aed4f66632b56ab8b37121ab7ff6c8eae5bc6777570bb5 | sha256sum