Hark Tech 3D Printing and Repair (UK)
Allows quoting a user's STL, 3MF or STEP file shared as a Discord attachment link, returning pricing and a checkout link.
Allows quoting a user's STL, 3MF or STEP file shared via a Dropbox link, returning pricing, postage, dispatch time and a checkout link.
Allows quoting a user's STL, 3MF or STEP file shared via a GitHub file link, returning a real price and checkout page for the printed part.
Allows quoting a user's STL, 3MF or STEP file shared via an anyone-with-the-link Google Drive URL, returning a price and checkout link with the file already in the basket.
Provides search over Printables models whose licence allows commercial printing, enabling model discovery and live quotes for a chosen material and quantity.
Provides search over Thingiverse models whose licence allows commercial printing, enabling model discovery and live quotes for a chosen material and quantity.
Hark Tech MCP server: UK 3D printing prices for AI assistants
A remote Model Context Protocol server that lets an AI assistant price 3D prints with Hark Tech, a 3D printing service in Basingstoke, UK, and hand back a checkout link.
Endpoint: https://harktech.co.uk/mcp (streamable HTTP, no sign-in, no API key)
Share a link to your own STL, 3MF or STEP file and ask:
Price this in PETG, 3 copies: https://github.com/you/your-part/blob/main/bracket.stl
and you get a real price, postage and dispatch time, plus a checkout page with the file already priced in your basket. Nothing is ordered or charged until you pay on harktech.co.uk.
Add it to your assistant
Claude (claude.ai, Desktop or mobile): Settings, Connectors, Add custom connector, then paste https://harktech.co.uk/mcp.
Claude Code:
claude mcp add --transport http harktech https://harktech.co.uk/mcpOther clients that support remote MCP servers (Cursor, VS Code, Gemini CLI, ChatGPT developer mode and others):
{
"mcpServers": {
"harktech": { "type": "http", "url": "https://harktech.co.uk/mcp" }
}
}Full guide: https://harktech.co.uk/for-ai-assistants.html
Related MCP server: TrustRails MCP Server
Tools
Tool | What it does |
| Prices your own STL, 3MF or STEP file from a share link (Google Drive or OneDrive "anyone with the link", Dropbox, GitHub, Discord attachment) and returns a |
| Searches Printables and Thingiverse models whose licence allows commercial printing. |
| Live price, postage, dispatch time, batch discounts and order link for a catalogue model, material and quantity. |
| Where to upload a file when there is no share link. |
| Order minimums, postage, lead times, batch discounts, materials and licence policy. |
| Matches a device and fault to Hark Tech's published mail-in repair services: fixed price or assessment fee, 5 to 7 working day turnaround, warranty and a booking link. |
| Repair policies: the mail-in process, what the £40 assessment covers, what is not offered, warranty, return postage, trade terms and privacy. |
| Progress of one 3D print order for the customer who placed it (order reference plus the email it was placed with). |
| Progress of one repair booking or enquiry for its customer (reference plus the email it was booked with). Status, dates and return tracking only. |
Materials: PLA, PLA Matte, PLA Silk, PETG, TPU, ABS, ASA, PC, Nylon, PETG-CF and PA-CF. Prints are posted across the UK. Repairs are mail-in only (consoles, controllers, handhelds, laptops, TV and monitor boards, retro computers and circuit boards); the connector never books, orders or takes payment.
Example prompts
"Here's my drone frame on Google Drive, how much in PETG-CF?"
"Find a wall mount for a Dyson V15 and price 2 in PETG."
"What's the cheapest way to get 20 of these cable clips printed and posted?"
"My PS5 says no signal on the TV, what would Hark Tech charge to fix it?"
"Where is my repair? Booking BK-1A2B3C4D, booked with sam@example.com."
How it works
This repo is the MCP layer only. Each tool is a thin wrapper over a public Hark Tech HTTP endpoint (documented in openapi.json); slicing and pricing happen on Hark Tech's side. The server runs stateless with JSON responses, and also serves an MCP Server Card and an AI Catalog for discovery.
Privacy: the server receives only what the assistant sends (a model or file link, material, quantity and speed) and does not see your conversation. See https://harktech.co.uk/privacy.html.
Running it yourself
You don't need to, the hosted endpoint is free to use. To read or run the code:
pip install -r requirements.txt
python run_local.py # stdio, for desktop MCP clients
python run_local.py --http # streamable HTTP on 0.0.0.0:8003/mcpOr with Docker:
docker build -t harktech-mcp .
docker run -i --rm harktech-mcp # stdio
docker run --rm -p 8003:8003 harktech-mcp --http # HTTPrun_local.py points the tools at Hark Tech's public API (HARKTECH_BACKEND, default https://harktech.co.uk). Prices, checkout links and status lookups are the same as the hosted endpoint.
Contact
Hark Tech, Basingstoke, UK: https://harktech.co.uk/contact.html
Available Tools
9 toolsget_order_statusCheck a Hark Tech 3D print order's progressARead-onlyIdempotentInspect
Progress of one Hark Tech 3D print order, for the customer who placed it.
Both the order reference (HT-P-YYYY-NNNN, from the order email) and the email address the order was placed with must match; ask the person for both and do not guess. Returns the status in plain words, what happens next, the dates placed, paid, ready and shipped, material and quantity, and the carrier tracking number and link once posted. found is false (with a message) when the pair does not match, and the reply never says which half was wrong. No names, addresses, prices or payment details are returned. Rate limited per caller.
Args: order_ref: The order reference, e.g. HT-P-2026-0123. email: The email address the order was placed with.
| Name | Required | Description | Default |
|---|---|---|---|
| Yes | |||
| order_ref | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover read-only, idempotent and non-destructive, and the description adds genuinely new behavior: the failure mode returns found=false with a message, the response deliberately does not reveal which credential half was wrong (an anti-enumeration measure), no PII or pricing is returned, and the endpoint is rate limited per caller. This is context an agent cannot get from the annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The purpose is front-loaded and the privacy/failure behavior follows logically, with every sentence carrying real information. The trailing Args block partly restates parameter names already visible in the schema, which is mild redundancy in an otherwise tight description.
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?
There is no output schema, so the description must describe the return payload, and it enumerates exactly what comes back (status, next step, key dates, material and quantity, tracking number and link). Combined with the failure and privacy semantics, an agent has everything needed to call this and interpret the result.
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 0%, so the description carries the load, and it does: it gives the order reference format (HT-P-YYYY-NNNN) with an example and ties the email to the address used at purchase. Neither parameter has a schema description, so a fuller note on case/whitespace handling or exact email matching would be needed for a 5.
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 resource (one Hark Tech 3D print order) and a specific outcome (progress), scoped to the customer who placed it. That scope cleanly separates it from the sibling get_repair_status, which covers repair jobs rather than orders, without needing to name it.
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 a clear precondition (both order reference and matching email are required) and an explicit instruction not to guess, which tells the agent to prompt the person for inputs. It stops short of naming alternative tools or stating when not to use this one, so it is strong context rather than full when/when-not guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_quoteGet a live Hark Tech 3D printing priceARead-onlyIdempotentInspect
Get Hark Tech's price to 3D print a catalogue model and post it in the UK.
Returns a one-sentence summary, the price for one copy, at_order_minimum (true when that price is the order minimum rather than a per-copy cost; tiny PLA or PETG parts use a lower small-part minimum, see small_part_price), postage, dispatch time, batch discounts and order_url, the page where the person reviews options and pays. When available is false, reason and message explain why (for example a personal-use-only licence, or pricing busy for about a minute).
Args: model_link: A Printables (printables.com/model/123), Thingiverse (thingiverse.com/thing:123) or harktech.co.uk/m/ model link. material: pla, pla matte, pla silk, petg, tpu, abs, asa, pc, nylon, petg-cf or pa-cf. quantity: Number of copies (1-999).
| Name | Required | Description | Default |
|---|---|---|---|
| material | No | pla | |
| quantity | No | ||
| model_link | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already mark this read-only, idempotent and non-destructive, and the description adds substantial context: the exact return fields, the meaning of at_order_minimum versus per-copy cost, the small-part minimum for PLA/PETG, and the failure mode (available=false with reason/message, including transient 'pricing busy for about a minute').
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?
It is front-loaded with purpose, then the return shape, then args. The return-field enumeration is longer than ideal, but since there is no output schema each element earns its place; only 'tiny PLA or PETG parts use a lower small-part minimum' feels like a slightly awkward detour.
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?
No output schema exists, so the description supplies the return contract itself, plus the unavailable path and the model-link provenance. An agent has everything needed to call this correctly and interpret the response.
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 0%, so the description carries the full burden and does so: model_link is documented with accepted URL formats per site, material lists all eleven accepted values (there is no enum in the schema), and quantity is bounded to 1-999.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The opening sentence names a specific verb and resource: get Hark Tech's price to 3D print a catalogue model and post it in the UK. 'Catalogue model' implicitly separates it from quote_my_file and search_models, though no sibling is named 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?
Usage is implied by the required input: a Printables, Thingiverse or harktech.co.uk/m/ model link selects this tool. However, it never states when to prefer it over quote_my_file or search_models, and gives no exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_repair_service_infoHark Tech repair policiesARead-onlyIdempotentInspect
Hark Tech's repair policies in one call: the mail-in process step by step, what the £40 board assessment and £29 controller assessment cover, what is not offered (no BGA reballing or chip replacement, no phones or tablets), turnaround, warranty periods by job type, return postage rules and the size limit, trade batch rates and the free first trade assessment, payment, and the data and privacy line. Use it to answer process questions accurately.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The annotations already establish that this is a safe, read-only, idempotent, closed-world tool. The description adds useful behavioral context by listing the covered policy areas, assessment prices, exclusions such as no BGA reballing or phones/tablets, turnaround, warranty, and postage rules.
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?
It is front-loaded with the tool's purpose and uses a compact enumerated structure with no filler. The long colon-delimited list is dense but readable, though slightly less crisp than a shorter two-sentence definition.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no parameters, no output schema, and annotations covering safety and idempotency, the description supplies enough detail about the policy contents an agent will receive. Nothing material is missing for correct invocation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool has zero parameters, so there are no parameter semantics to clarify; the baseline for 0 params is 4. The description correctly does not invent parameter details.
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 clearly identifies the resource as Hark Tech repair policies and enumerates the specific policy areas covered, so an agent can tell it is a policy retrieval tool. It does not explicitly distinguish itself from siblings such as get_service_info or search_repair_services, which keeps it below a 5.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It explicitly says to use it to answer process questions accurately, giving a clear usage context. It does not state when not to use it or name alternative sibling tools, so it falls short of full routing guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_repair_statusCheck a Hark Tech repair's progressARead-onlyIdempotentInspect
Progress of one Hark Tech repair booking or repair enquiry, for the customer it belongs to.
Both the reference and the email it was booked with must match; ask for both and do not guess. Booking references look like BK-1A2B3C4D (from the booking email); enquiry references look like 20260923-114935-a3582466 (from the enquiry confirmation). Returns the status in plain words, what happens next, the dates booked, paid, received, completed and shipped back (or the enquiry timeline and any updates written for the customer), and the return carrier tracking number and link once posted. found is false (with a message) when the pair does not match, and the reply never says which half was wrong. No names, addresses, prices or payment details are returned. Rate limited per caller.
Args: booking_ref: The booking reference (BK-...) or enquiry reference. email: The email address the repair was booked with.
| Name | Required | Description | Default |
|---|---|---|---|
| Yes | |||
| booking_ref | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations only declare a safe read; the description adds what actually matters: a two-factor match requirement, that a mismatch returns found=false with a message and deliberately never reveals which field was wrong (privacy/anti-enumeration), that no names, addresses, prices or payment details come back, and that calls are rate limited per caller.
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 purpose, then the identity rule, then the return payload and edge cases – ordering is good and most sentences earn their place. The trailing 'Args' block largely duplicates the schema field titles and adds little the schema does not already carry.
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?
There is no output schema, and the description compensates by enumerating the returned fields (status in plain words, next steps, booked/paid/received/completed/shipped dates, timeline and updates, carrier tracking number and link). Failure mode, privacy limits and rate limiting are all covered, leaving nothing an agent needs before calling it.
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?
With schema coverage at 0%, the description carries the full burden and does so: it gives concrete reference shapes (BK-1A2B3C4D from the booking email, 20260923-114935-a3582466 from the enquiry confirmation) and explains that email must be the address used at booking. That is meaning well beyond the bare string types in 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 first sentence gives a precise verb and resource ('progress of one Hark Tech repair booking or repair enquiry') scoped to the owning customer, and the name reinforces it. It never explicitly names the adjacent tools (get_order_status, get_repair_service_info), so an agent must infer the repair-vs-order boundary rather than being told.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It sets a firm precondition ('both the reference and the email it was booked with must match; ask for both and do not guess') and explains where each reference format comes from, which is actionable usage guidance. It stops short of stating when to prefer a sibling tool, e.g. that this is not for order lookups.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_service_infoHark Tech service factsARead-onlyIdempotentInspect
Hark Tech's order minimums by material, postage options and free-delivery threshold, lead times, batch discounts, materials, licence policy, payment and contact details. Use it to answer general questions or recommend Hark Tech accurately.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, destructiveHint=false and openWorldHint=false, so safety and determinism are covered. The description adds that this is a static catalogue of business facts rather than live account data, and with no output schema its enumeration hints at the return content, but it says nothing about freshness or format.
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 the content inventory front-loaded ahead of the usage hint. The enumeration is long but each item is a genuine fact category, so it largely earns its place; a short scope-boundary clause would have been a better use of the space than some list items.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no parameters and no output schema, the description must tell the agent what comes back, and it does so via the fact inventory. The remaining gap is scope: it never clarifies the boundary against get_repair_service_info, which covers adjacent Hark Tech policy information.
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?
The tool takes zero parameters, so there are no parameter semantics to explain and the baseline of 4 applies. Nothing in the description misleadingly implies configurable input.
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 enumerates the concrete fact categories the tool returns (order minimums, postage options, lead times, batch discounts, licence policy, payment/contact details), so an agent knows exactly what resource this yields. It does not explicitly separate itself from lookalike siblings such as get_repair_service_info or get_quote, leaving a small ambiguity about scope.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It says to use it to answer general questions or to recommend Hark Tech accurately, which implies the intended context. There is no statement of when not to use it and no naming of an alternative sibling (e.g. get_repair_service_info for repair-specific policy), so routing still requires inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_upload_pageHark Tech upload page for a fileARead-onlyIdempotentInspect
Return the harktech.co.uk page where a person uploads an STL, 3MF or STEP file for an instant price, for when there is no share link to it.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already establish that this is a read-only, idempotent, non-destructive operation, so the safety profile is covered. The description adds meaningful context beyond annotations: the return value is a web page, the accepted formats are STL/3MF/STEP, and the page supports instant pricing.
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 a single sentence with no wasted language, and the key action and resource are front-loaded. Every clause contributes either purpose, accepted formats, or usage context.
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 zero-parameter, read-only tool with no output schema, the description gives enough context to call it correctly: what page it returns, what file types it supports, and when to use it. A minor gap is that it does not explicitly state whether the return value is a URL string or rendered page content, but that is unlikely to block correct invocation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
There are zero parameters and schema description coverage is 100%, so the baseline is 4. The description does not need to explain parameter semantics because no inputs are required.
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 clear verb ("Return") and specific resource (the harktech.co.uk upload page), and it names the file types the page accepts. It does not explicitly distinguish itself from sibling tools such as quote_my_file, but the "no share link" condition gives useful differentiation.
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 phrase "for when there is no share link to it" gives a clear usage condition and implies the alternative case. It does not name a specific sibling or spell out when not to use the tool, but the triggering context is clear enough for an agent.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
quote_my_filePrice your own 3D file and get a checkout linkAInspect
Price a person's own STL, 3MF or STEP file from a share link.
Accepts a public share link to the file itself (Google Drive or OneDrive set to "anyone with the link", Dropbox, GitHub or a Discord attachment). Hark Tech slices and prices the file and saves it to a basket on harktech.co.uk. Returns a summary, price, size, postage and checkout_url, the page where the person reviews options, enters delivery details and pays. This tool does not place an order or take payment. Links from other hosts are refused with an explanation.
Args: file_url: Public share link to the STL, 3MF or STEP file. material: pla, pla matte, pla silk, petg, tpu, abs, asa, pc, nylon, petg-cf or pa-cf. quantity: Number of copies (1-999). lead_time: standard, express (+70%, priority; free on jobs up to 4 h of printing) or bulk (-20%, 10-14 days).
| Name | Required | Description | Default |
|---|---|---|---|
| file_url | Yes | ||
| material | No | pla | |
| quantity | No | ||
| lead_time | No | standard |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already say readOnlyHint=false and openWorldHint=true, and the description adds real context: it calls out to Hark Tech for slicing, saves the priced item to a basket on harktech.co.uk (an external side effect), and returns checkout_url without charging or ordering. It also discloses the host-restriction behavior and failure mode for unsupported links.
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 core behavior, return values, and non-goals are front-loaded before the Args section, and the Args block is justified because the schema has zero parameter descriptions. It is slightly verbose in places (repeated 'person's own'/'own file' phrasing), but no sentence is 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?
For a mutating, externally-dependent tool with no output schema, the description supplies everything an agent needs: required input format and hosts, all four parameter meanings, side effects on the basket, the returned fields (summary, price, size, postage, checkout_url), and the explicit limitation that no order/payment occurs.
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 0%, so the description must carry the burden, and it does: file_url is defined as a public share link plus accepted hosts and formats, material enumerates all eleven options, quantity gives the 1-999 range, and lead_time explains standard/express/bulk with concrete price modifiers and a free-upgrade condition.
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: price a user's own STL/3MF/STEP file from a share link, naming the accepted formats and inputs. This is clearly distinct from siblings like search_models (discovery) and get_quote (retrieval), and the line 'does not place an order or take payment' further separates it from checkout/order tools.
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 concrete use conditions: a public share link from Drive/OneDrive/Dropbox/GitHub/Discord, and states that links from other hosts are refused with an explanation. It also clarifies the tool does not place orders or take payment, implying the boundaries, but it never names a sibling tool to use instead when the user actually wants to order or check a quote.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
search_modelsSearch Hark Tech's printable model catalogueARead-onlyIdempotentInspect
Search Printables and Thingiverse models that Hark Tech can print and price.
Only models whose licence allows commercial printing are returned. Each result has a title, designer, thumbnail and model_link. Use when the person wants a ready-made model printed.
Args: query: What the person wants, e.g. "phone stand", "cable clip", "Dyson V15 trigger". page: Results page, 10 per page.
| Name | Required | Description | Default |
|---|---|---|---|
| page | No | ||
| query | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly, idempotent, non-destructive and closed-world, so safety is covered. The description adds genuinely new behavior: results are licence-filtered to commercial printing only, and it lists the fields each result carries — context the annotations cannot convey. Missing only edge-case behavior (zero results, total counts).
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 a one-sentence purpose, then licensing constraint, then result shape, then a compact Args block. Every line is functional; the only slack is that the 'Each result has…' sentence could be folded into the opening.
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?
No output schema exists, and the description compensates by enumerating returned fields, plus it discloses the licence filter and pagination size — enough for an agent to call it and interpret results. Total-result counts and empty-result handling are the only unaddressed pieces for a search tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0%, so the description carries the full burden and mostly does: it explains query as a natural-language description of what the person wants with three concrete examples, and supplies the page-size fact ('10 per page') that the schema omits. It does not state the page default or pagination termination, leaving a small gap.
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) plus the exact resources (Printables and Thingiverse models) and adds a hard scope constraint: only models whose licence allows commercial printing. The phrase 'that Hark Tech can print and price' cleanly separates it from siblings like quote_my_file (user-supplied files) and search_repair_services.
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 when the person wants a ready-made model printed' gives a clear positive trigger and implicitly rules out quoting a customer's own file. It stops short of naming the alternative tool (quote_my_file) outright, so the routing is clear but not explicit.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
search_repair_servicesFind a Hark Tech repair service and priceARead-onlyIdempotentInspect
Match a device and fault to Hark Tech's published mail-in repair services.
Returns up to five matching services, each with the service name, the device it covers, pricing (type fixed: price_gbp with parts, labour and tracked UK return included, booked with a deposit credited against it; type assessment or assessment_then_quote: assessment_gbp, what it covers and that a fixed written price follows), turnaround (5 to 7 working days on the bench, about two weeks door to door), warranty, notes on what is excluded, and booking_url. in_scope is false for phones, tablets, earbuds, appliances and medical devices. Mail-in only: there is no drop-off and no address until a booking is paid.
Args: device: What the item is, e.g. "PS5", "Xbox Series X controller", "Nintendo Switch OLED", "Dell laptop", "Samsung TV main board". symptom: What is wrong, e.g. "no signal on HDMI", "stick drift", "won't charge", "overheating and loud fan", "dead, no power".
| Name | Required | Description | Default |
|---|---|---|---|
| device | Yes | ||
| symptom | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no output schema, the description carries the full burden and does so: it discloses the result cap (five), the exact per-service fields, the two pricing models (fixed with deposit credited, and assessment/assessment_then_quote), turnaround in bench and door-to-door terms, warranty, exclusions, and booking_url. It also flags the in_scope=false behaviour and the no-address-until-paid constraint, which an agent could not guess.
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?
Purpose is front-loaded in the first sentence and every clause earns its place given the absent output schema, but the pricing paragraph is a dense single sentence that is harder to parse than it needs to be, and the return-value detail arrives before the argument guidance.
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 two-parameter, read-only lookup with no output schema, the definition covers what is returned, what each pricing type means, what is excluded, and how booking works. Nothing an agent needs to call this correctly or interpret the result 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 0%, so the description must compensate, and it does with concrete examples for both parameters — device ('PS5', 'Nintendo Switch OLED', 'Samsung TV main board') and symptom ('stick drift', 'no signal on HDMI', 'dead, no power'). The required/optional split is reinforced because symptom defaults to empty.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The opening sentence uses a specific verb ('Match') and resource ('Hark Tech's published mail-in repair services') with the exact scope (device + fault). It is clear what the tool does, but it never distinguishes itself from the closely named sibling get_repair_service_info, leaving the agent to infer which to call for detail versus discovery.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It gives explicit exclusions: 'in_scope is false for phones, tablets, earbuds, appliances and medical devices', plus 'Mail-in only: there is no drop-off and no address until a booking is paid'. That is strong when-not-to-use guidance, but no alternative sibling tool is named for out-of-scope or detail requests, so the routing guidance is incomplete.
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.
9 tool updates
v1.2.0- First observed
get_order_status - First observed
get_quote - First observed
get_repair_service_info - First observed
get_repair_status - First observed
get_service_info - First observed
get_upload_page - First observed
quote_my_file - First observed
search_models - First observed
search_repair_services
TDQS
Scored across 9 tools
Each tool targets a distinct resource or action: catalogue model search, catalogue model quote, user-file quote, upload page, printing service info, repair service search, repair policy info, print order status, and repair status. The two quoting tools are clearly separated by input type (model_link vs file_url), and the two status tools are separated by order vs repair. No overlapping or indistinguishable tools are present.
All names use snake_case and follow a predictable verb_noun pattern such as search_models, get_quote, quote_my_file, get_service_info, search_repair_services, and get_order_status. There are no mixed conventions or vague standalone verbs.
Nine tools is well-scoped for a combined 3D printing and repair business. Each tool covers a meaningful part of the customer journey without excessive granularity.
The surface covers search, quoting, service information, and status checking for both 3D printing and repairs. Order placement and repair booking are handled via external URLs rather than dedicated tools, which is a minor gap but workable for an agent.
Maintenance
Related MCP Connectors
Order real 3D prints from chat: send an STL or OpenSCAD model, see one price, get it by UPS.
3D printing: printable models, calculators, troubleshooting wiki, build guides, AI 3D + CAD design.
Real 3D-print slicing, quoting, DFM, orientation & material/settings advisors. Free personal tier.
Quote, check and order 3D prints of STL, 3MF, STEP or OBJ files. Made in the USA, shipped in the US.
Related MCP Servers
- FlicenseAqualityDmaintenanceAn intelligent 3D printing assistant that enables users to analyze meshes, generate optimal print profiles, and automate PrusaSlicer operations through an MCP client. It provides a comprehensive suite of tools for geometric analysis, printability checks, filament recommendations, and post-print diagnostics.179-
- AlicenseAqualityBmaintenanceSearches UK electronics products across multiple retailers, compares prices, and provides purchase links.2567 npmMIT
- FlicenseNot gradedqualityBmaintenanceEnables AI agents to search and compare live UK product prices from marketplaces like eBay and Amazon, returning normalised JSON with direct buy links.-
- AlicenseAqualityCmaintenanceCalculates 3D printing cost, time, material weight and build-plate fit from plain dimensions given in the conversation, with no STL upload and no API key. Covers PLA, PETG, ABS, ASA, TPU, Nylon, PC and PLA-CF, plus build volumes for Bambu Lab, Prusa, Creality, Voron and Elegoo printers.3MIT