01Safety
0.0 / 30
What changed in the harness
Selection accuracy 98→96, token cost up 8%, unconfirmed writes 0%→0%.
Category breakdown
Earned points across the four signals Gradable measures. Safety and Legibility are scored out of 30; Economics and Discoverability are scored out of 20.
0.0 / 30
22.9 / 30
19.8 / 20
11.2 / 20
Highest-impact fix
Estimated gain +30 pointsExpose machine-readable principal/tenant confirmation and a non-mutating permission check so agents can verify both before destructive actions.
Description evidence
10 defects found across the exposed tool descriptions. Suggested rewrites make purpose, inputs, boundaries, and returns easier for an agent to understand.
| Tool | Defect types | Suggested rewrite |
|---|---|---|
get_machining_services |
no_return_description |
Return an overview of FEODE's AI-accessible precision contract machining & testing service for a client's drawing/spec: capabilities (large-envelope CNC, deep-hole boring up to 7m, non-magnetic drill collar repair, welding/cladding), test capacity (30k psi hydraulic, 20k psi N2, MPI/UT/PT), supported materials, how-it-works, and payment & compliance policy. Also notes international shipping, compliance-first handling, and prepayment-based policy. |
get_machining_terms |
no_return_description |
Return FEODE's full intake terms & compliance requirements for the machining/testing service, including required RFQ fields, KYB-lite (legal entity / country / real contact), end-use declaration, prohibited items, IP & liability terms, and prepayment & accepted payment methods (bank wire / T/T). |
submit_machining_rfq |
params_unexplained |
Submit a structured machining/testing RFQ; runs a lightweight compliance screen (prohibited-use + sanctions) and, if cleared, registers the enquiry for human follow-up from enquiry@feode.com. Not a contract or quotation; no payment is taken here. Provide the legal entity behind the request: company (legal entity name), country of registration, contact_name (real human), email, part_description (down to drawing reference), material, quantity (number of parts/units), and end_use (declared use of the part). Optional: tolerance, industry, drawing_url, notes. |
get_company_profile |
no_return_description |
Return FEODE's company profile, including legal name, founding year (1985), HQ, Huizhou manufacturing/test base, areas served, and contact. |
list_products |
name_restates_behavior no_return_description |
Return FEODE's product/service portfolio to orient a caller before requesting detail on a specific line. Returns the 7 product/service lines, each with id, name, and category so a line can be referenced by id. |
get_product_specs |
no_return_description |
Return detailed specs/highlights for one product line selected by id (one of: well-abandonment, subsea-wellhead, feccs, completion, drill-pipe, fishing, supervision). Use list_products to see the available ids. |
get_certifications |
no_return_description |
Return FEODE's certifications and compliance evidence: BV + CCS classification of the subsea wellhead system (incl. references), 8 API monogram licenses, PSL 4S, ISO 9001/14001/45001, and national awards. |
search_capabilities |
params_unexplained no_return_description |
Return matching capabilities by keyword search across FEODE products/specs. Pass query as the search string, e.g. 'subsea wellhead 15000 psi', 'one trip abandonment', 'continuous circulation'. |
list_drill_pipe |
no_return_description |
Return all NOV Grant Prideco drill string items in the reference DB (drill pipe, heavy-weight drill pipe HWDP, drill collars), each with id, label, product_type, connection, and grade. Use the returned id with get_drill_pipe_specs for full performance specs. |
search_drill_pipe |
params_unexplained |
Return drill string reference items that match a keyword search over the NOV Grant Prideco reference. Pass query as the search string, e.g. 'NC50', '5 S-135', 'HT55 make-up torque', '8 drill collar', 'XT57'. Returns matching items with full specs. |
Selection evidence
13 pairs where similar names or overlapping descriptions may send an agent toward the wrong tool.
| Tool A | Tool B | Confidence | Why they collide |
|---|---|---|---|
get_machining_services |
get_machining_terms |
medium | Both cover machining/payment/compliance; a task like 'what are the terms and payment requirements for your machining service' could send an agent to the capabilities tool (which summarizes payment & compliance policy) instead of the full terms tool. |
list_drill_pipe |
search_drill_pipe |
medium | 'Show me the available drill pipe items' is ambiguous: list returns everything, but phrasing like 'find/search the drill pipe items in the reference DB' points at search, and neither name clearly distinguishes enumeration from querying. |
get_drill_pipe_specs |
search_drill_pipe |
medium | A task like 'what are the specs for 5-inch S-135 NC50 pipe?' has no id, so keyword search is correct, but an agent may instead call get_drill_pipe_specs expecting an id; conversely 'specs for dp-5-19.50' also matches search's keywords. |
get_product_specs |
get_drill_pipe_specs |
high | list_products has a 'drill-pipe' product line id, so 'get the drill-pipe specs' maps to get_product_specs, yet the NOV performance data lives in get_drill_pipe_specs; a user asking for 'drill pipe specs' could plausibly get either. |
list_drill_pipe |
get_drill_pipe_specs |
medium | 'Show me the drill pipe specs' could be satisfied by the item listing (which already exposes id/label/grade/connection) or by full per-item specs; without an explicit id the agent must guess which tool the user meant. |
get_drill_pipe_specs |
get_drill_string_guidance |
medium | A task about 'make-up torque for a drill pipe' is covered by both: specs returns per-item make-up torque max/min while guidance explains torque practice and the 80% rule, so the wrong reference tool could be selected. |
get_machining_services |
get_certifications |
medium | A query like 'what certifications/testing does your machining facility hold' could route to get_machining_services because it lists test capacity (30k/20k psi, MPI/UT/PT), even though formal API/ISO certifications are in get_certifications. |
list_products |
get_product_specs |
medium | 'Give me your products and their specs' is ambiguous: list returns id/name/category, while get_product_specs returns the detail; a task phrased as 'list the product specs' could be answered acceptably by either and an agent may pick the wrong one. |
list_products |
list_drill_pipe |
medium | 'List the drill pipe products' is genuinely ambiguous because list_products includes a drill-pipe product line, while list_drill_pipe enumerates the NOV Grant Prideco items; both are valid list tools with overlapping vocabulary. |
search_capabilities |
search_drill_pipe |
medium | 'Search for drill pipe capabilities/specs' is ambiguous: search_capabilities covers products broadly (including drill pipe), while search_drill_pipe searches the NOV reference; with only 'search' + 'drill pipe' tokens the agent could select either. |
search_drill_pipe |
get_drill_string_guidance |
medium | A task like 'look up make-up torque or tool-joint guidance in the drill string reference' could be answered by keyword search (search_drill_pipe examples include torque) or by the guidance tool's make_up_torque/double-shoulder topics. |
get_machining_services |
submit_machining_rfq |
medium | 'How do I order/get machining services' is ambiguous: an agent may submit an RFQ directly (submit_machining_rfq) when the user only wants process/capability info, or read get_machining_services (how-it-works/prepayment) when the user actually wants to request a quote. |
get_machining_terms |
submit_machining_rfq |
medium | 'What do I need to submit a machining RFQ' could lead an agent to register a submission (submit_machining_rfq) instead of returning the required-fields/KYB terms, or to only summarize terms when the user wants to actually submit; the RFQ keyword overlaps both. |
Compare the field