Tethered Trust

Compatibility checks for AI agents before they buy or install: verdicts, evidence, receipts.

사용해야 할까요

품질 및 안전성

A
설명 품질
97%
스키마 완전성
88%
이름 품질
90%
오염 위험
100%
권한 일치
100%
프로토콜 준수
100%

발견 사항 (1)

  • LOWTool 'how_it_works' description lacks action verbhow_it_works에서

도구 정의와 프로토콜 준수에 대한 자동 분석을 기반으로 합니다.

컨텍스트 비용

~7,757토큰 (도구 정의)
~3.4 KB일반적인 응답 크기
상당한 주의 영향 (128k 컨텍스트의 6.06%)

이는 서버의 도구가 모델의 컨텍스트에 로드될 때마다 소비되는 대략적인 토큰 수입니다. 수치가 높을수록 다른 작업에 사용할 수 있는 주의가 줄어듭니다.

설치

원클릭 설치

`claude_desktop_config.json` 파일에 다음을 추가하세요:

{
  "mcpServers": {
    "tethered-trust": {
      "url": "https://tetheredtrust.com/mcp"
    }
  }
}

원격 엔드포인트

https://tetheredtrust.com/mcpstreamable-http

할 수 있는 일

도구 목록

도구 (18)

🟢 읽기 전용🟡 쓰기🔴 삭제⚪ 알 수 없음
🟢how_it_works

What Tethered Trust is, what it covers, where its data comes from, pricing and terms.

입력 스키마

{
  "type": "object",
  "properties": {}
}

출력 스키마

{
  "type": "object"
}
🟢list_coverage(category)

Which product categories and models are in the compatibility graph, with counts. Pass a category to list its models. Covers anything that has to fit, plug in, mount, run on or charge with something someone owns. Verified catalog (specs checked against cited manufacturer sources): computers & consoles (RAM, M.2 SSDs, USB-C chargers), phones/tablets/watches (USB-C PD, MagSafe, Qi2, watch bands), cameras (lens mounts, adapters, batteries, memory cards), cordless power tools (battery platforms), printers (ink, toner, drums), appliances (refrigerator water and air filters, installation fit), vacuums (bags, filters, batteries, robot-vacuum parts), air quality (purifier filters, HVAC media, humidifier pads), e-bikes (batteries and chargers by drive system), smart home (Matter, Thread, Zigbee, hubs, bulb bases), PC building (CPU sockets, cooler mounts, memory, clearances, power), cars & EV charging (tire sizes by trim, NACS/J1772/CCS1 and approved adapters, home chargers; a starter set of models) and TVs, consoles & streaming (VESA mounts, weight and screen size, console generations, app platforms). Products outside the catalog in any category are read by AI in terms of the same standards and returned as unverified.

입력 스키마

{
  "type": "object",
  "properties": {
    "category": {
      "type": "string",
      "description": "Optional: one category id from a previous list_coverage call (e.g. 'cameras') to list every model in it."
    }
  }
}

출력 스키마

{
  "type": "object",
  "properties": {
    "categories": {
      "type": "array",
      "items": {
        "type": "object"
      }
    },
    "totals": {
      "type": "object"
    },
    "models": {
      "type": "array",
      "items": {
        "type": "object"
      }
    }
  },
  "required": [
    "categories",
    "totals"
  ]
}
🟢check_cart_before_checkout(checkout, line_items, products, owned)

Checks a cart at checkout. Takes the checkout session exactly as a commerce protocol returns it (a UCP checkout or an ACP CheckoutSession) or plain line items, plus what the customer already owns. Returns a decision per line item, safe_to_checkout, an action (proceed, resolve_conditions, do_not_checkout, ask_customer), questions, substitutions, a signed receipt, and a com.tetheredtrust.shopping.compatibility extension object to attach to the checkout.

입력 스키마

{
  "type": "object",
  "properties": {
    "checkout": {
      "type": "object",
      "description": "The checkout session as your commerce protocol returns it: a UCP checkout (line_items[].item.title) or an ACP CheckoutSession (line_items[].item.id). Or send line_items directly."
    },
    "line_items": {
      "type": "array",
      "maxItems": 25,
      "items": {
        "type": "object"
      },
      "description": "Generic cart: [{id, title | url | gtin | sku | text, quantity}]. Used when checkout isn't sent."
    },
    "products": {
      "type": "object",
      "description": "ACP only: map of item id → {title | url | gtin} from your product feed, because ACP line items carry only ids."
    },
    "owned": {
      "type": "array",
      "maxItems": 24,
      "items": {
        "anyOf": [
          {
            "type": "string"
          },
          {
            "type": "object"
          }
        ]
      },
      "description": "What the customer already owns that these items must work with (model numbers, URLs or descriptions; objects may carry config like memory_modules)."
    }
  }
}

출력 스키마

{
  "type": "object"
}
🟢enrich_catalog(items, research)

For retailers and marketplaces (API key required): up to 50 products per call (SKU with title, URL or GTIN) in; each product's compatibility attributes out (standards it takes and provides, numeric limits, evidence level, freshness), ready to add to a product feed or UCP catalog so agents can match it to what shoppers own.

입력 스키마

{
  "type": "object",
  "properties": {
    "items": {
      "type": "array",
      "minItems": 1,
      "maxItems": 50,
      "items": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "description": "Your SKU or offer id (echoed back)."
          },
          "title": {
            "type": "string"
          },
          "url": {
            "type": "string"
          },
          "gtin": {
            "type": "string"
          },
          "brand": {
            "type": "string"
          },
          "model": {
            "type": "string"
          }
        }
      }
    },
    "research": {
      "type": "boolean",
      "description": "Default true: research up to 10 items per call that aren't in our catalog (from the manufacturer's page)."
    }
  },
  "required": [
    "items"
  ]
}

출력 스키마

{
  "type": "object"
}
🟢identify_product(product, role, research)

Identify a product from a URL, model number, SKU, ASIN, UPC/EAN or description, and get its compatibility profile: the standards it takes and provides (mounts, sockets, connectors, platforms, part numbers, sizes), numeric limits (OS version, watts, weight, screen size), evidence and freshness. Products not in our reviewed catalog are researched on demand from the manufacturer's page and returned with status read_from_manufacturer_page (unreviewed) or unconfirmed (not enough to decide on). Use first when the product could be anything.

입력 스키마

{
  "type": "object",
  "properties": {
    "product": {
      "type": "string",
      "description": "Anything that identifies the product: a manufacturer or retailer URL, a model number, SKU, ASIN, UPC/EAN, a vehicle VIN, or a listing title / description."
    },
    "role": {
      "type": "string",
      "enum": [
        "owned",
        "buying"
      ],
      "description": "Optional: is this something the person already owns, or something being considered? Helps when a product is both (a phone owns cases; a car mount holds phones)."
    },
    "research": {
      "type": "boolean",
      "description": "Default true. Set false to look only in the reviewed catalog (no on-demand research)."
    }
  },
  "required": [
    "product"
  ]
}

출력 스키마

{
  "type": "object"
}
🟢list_standards

Every compatibility standard family (with reviewed values), the open formats used for new values, and the numeric limit keys. How Tethered Trust represents physical connections, dimensional fit, vehicles, software and services.

입력 스키마

{
  "type": "object",
  "properties": {}
}

출력 스키마

{
  "type": "object"
}
🟢resolve_product(query)

Look up one product in the Tethered Trust graph by name or model number and get its structured specs, what it accepts (mounts, battery platforms, cartridges, protocols) and what it fits. If the text could mean several models, returns them all as candidates (ambiguous: true) with ambiguous: true.

입력 스키마

{
  "type": "object",
  "properties": {
    "query": {
      "type": "string",
      "description": "Product name or model number."
    }
  },
  "required": [
    "query"
  ]
}

출력 스키마

{
  "type": "object",
  "properties": {
    "found": {
      "type": "boolean"
    },
    "ambiguous": {
      "type": "boolean"
    },
    "product": {
      "type": "object"
    },
    "candidates": {
      "type": "array",
      "items": {
        "type": "object"
      }
    },
    "read_from_text": {},
    "message": {
      "type": "string"
    }
  },
  "required": [
    "found"
  ]
}
🟢validate_purchase_plan(goal, setup, purchase)

Check a whole purchase before recommending or ordering it: the setup the person owns (with current configuration) plus everything in the cart. Returns one decision (supported / conditional / incompatible / insufficient_evidence), a result per part, configuration limits across the plan (memory slots and capacity, M.2 slots), adapters or hubs still needed, substitutions for parts that won't work, the exact questions blocking a decision, evidence, and a signed receipt. Covers anything that has to fit, plug in, mount, run on or charge with something someone owns. Verified catalog (specs checked against cited manufacturer sources): computers & consoles (RAM, M.2 SSDs, USB-C chargers), phones/tablets/watches (USB-C PD, MagSafe, Qi2, watch bands), cameras (lens mounts, adapters, batteries, memory cards), cordless power tools (battery platforms), printers (ink, toner, drums), appliances (refrigerator water and air filters, installation fit), vacuums (bags, filters, batteries, robot-vacuum parts), air quality (purifier filters, HVAC media, humidifier pads), e-bikes (batteries and chargers by drive system), smart home (Matter, Thread, Zigbee, hubs, bulb bases), PC building (CPU sockets, cooler mounts, memory, clearances, power), cars & EV charging (tire sizes by trim, NACS/J1772/CCS1 and approved adapters, home chargers; a starter set of models) and TVs, consoles & streaming (VESA mounts, weight and screen size, console generations, app platforms). Products outside the catalog in any category are read by AI in terms of the same standards and returned as unverified.

입력 스키마

{
  "type": "object",
  "properties": {
    "goal": {
      "type": "string",
      "description": "Optional: what the person is trying to do, e.g. 'upgrade this laptop to 32 GB'. Echoed back; requirements are derived from the devices."
    },
    "setup": {
      "type": "array",
      "maxItems": 24,
      "items": {
        "anyOf": [
          {
            "type": "string",
            "description": "Exact model number or name."
          },
          {
            "type": "object",
            "properties": {
              "text": {
                "type": "string",
                "description": "Exact model number or name, or key specs."
              },
              "id": {
                "type": "string",
                "description": "Exact product id (from resolve_product or a question's options)."
              },
              "quantity": {
                "type": "integer",
                "minimum": 1,
                "maximum": 16
              },
              "for": {
                "type": [
                  "string",
                  "integer"
                ],
                "description": "Purchases only: which item this part is for (index or name), when the plan has several devices."
              },
              "config": {
                "type": "object",
                "description": "Setup items only: current configuration, e.g. {\"memory_modules\": [{\"capacity_gb\": 8}], \"installed_drives\": 1, \"replace_memory\": true}."
              }
            }
          }
        ]
      },
      "description": "What the person already owns (devices, appliances, tools, hubs) with exact model numbers, plus current configuration."
    },
    "purchase": {
      "type": "array",
      "minItems": 1,
      "maxItems": 25,
      "items": {
        "anyOf": [
          {
            "type": "string",
            "description": "Exact model number or name."
          },
          {
            "type": "object",
            "properties": {
              "text": {
                "type": "string",
                "description": "Exact model number or name, or key specs."
              },
              "id": {
                "type": "string",
                "description": "Exact product id (from resolve_product or a question's options)."
              },
              "quantity": {
                "type": "integer",
                "minimum": 1,
                "maximum": 16
              },
              "for": {
                "type": [
                  "string",
                  "integer"
                ],
                "description": "Purchases only: which item this part is for (index or name), when the plan has several devices."
              },
              "config": {
                "type": "object",
                "description": "Setup items only: current configuration, e.g. {\"memory_modules\": [{\"capacity_gb\": 8}], \"installed_drives\": 1, \"replace_memory\": true}."
              }
            }
          }
        ]
      },
      "description": "Everything being considered for purchase: parts, accessories or new devices, with quantities."
    }
  },
  "required": [
    "purchase"
  ]
}

출력 스키마

{
  "type": "object",
  "properties": {
    "plan_id": {
      "type": "string"
    },
    "decision": {
      "type": "string",
      "enum": [
        "supported",
        "conditional",
        "incompatible",
        "insufficient_evidence"
      ]
    },
    "summary": {
      "type": "string"
    },
    "items": {
      "type": "array",
      "items": {
        "type": "object"
      }
    },
    "results": {
      "type": "array",
      "items": {
        "type": "object",
        "properties": {
          "item": {
            "type": "integer"
          },
          "name": {
            "type": "string"
          },
          "target": {},
          "decision": {
            "type": "string",
            "enum": [
              "supported",
              "conditional",
              "incompatible",
              "insufficient_evidence"
            ]
          },
          "summary": {
            "type": "string"
          },
          "checks": {
            "type": "array",
            "items": {
              "type": "object",
              "properties": {
                "rule": {
                  "type": "string"
                },
                "ok": {
                  "type": [
                    "boolean",
                    "null"
                  ]
                },
                "detail": {
                  "type": "string"
                }
              }
            }
          },
          "caveats": {
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "conditions": {
            "type": "array",
            "items": {
              "type": "object"
            }
          }
        }
      }
    },
    "system_checks": {
      "type": "array",
      "items": {
        "type": "object",
        "properties": {
          "item": {
            "type": "integer"
          },
          "rule": {
            "type": "string"
          },
          "ok": {
            "type": [
              "boolean",
              "null"
            ]
          },
          "detail": {
            "type": "string"
          }
        }
      }
    },
    "required_accessories": {
      "type": "array",
      "items": {
        "type": "object"
      }
    },
    "substitutions": {
      "type": "array",
      "items": {
        "type": "object"
      }
    },
    "questions": {
      "type": "array",
      "items": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string"
          },
          "ask": {
            "type": "string"
          },
          "blocking": {
            "type": "boolean"
          },
          "answer_with": {
            "type": "string"
          },
          "options": {
            "type": "array",
            "items": {
              "type": "object"
            }
          }
        }
      }
    },
    "requirements": {
      "type": "array",
      "items": {
        "type": "object"
      }
    },
    "evidence": {
      "type": "array",
      "items": {
        "type": "object",
        "properties": {
          "type": {
            "type": "string"
          },
          "text": {
            "type": "string"
          },
          "url": {
            "type": [
              "string",
              "null"
            ]
          }
        }
      }
    },
    "confidence": {
      "type": "number"
    },
    "valid_until": {
      "type": "string"
    },
    "receipt": {
      "type": [
        "object",
        "null"
      ]
    },
    "next_step": {
      "type": "string"
    }
  },
  "required": [
    "plan_id",
    "decision",
    "summary",
    "results"
  ]
}
🟢fix_purchase_plan(goal, setup, purchase)

When a plan comes back incompatible or conditional: the smallest set of changes that makes it work (swap a part for a verified one that fits everything else, add a missing cooler, hub or adapter, trim quantities that exceed slots), re-validated, with the reason for each change. Fewest changes and verified products first; no prices.

입력 스키마

{
  "type": "object",
  "properties": {
    "goal": {
      "type": "string",
      "description": "Optional: what the person is trying to do, e.g. 'upgrade this laptop to 32 GB'. Echoed back; requirements are derived from the devices."
    },
    "setup": {
      "type": "array",
      "maxItems": 24,
      "items": {
        "anyOf": [
          {
            "type": "string",
            "description": "Exact model number or name."
          },
          {
            "type": "object",
            "properties": {
              "text": {
                "type": "string",
                "description": "Exact model number or name, or key specs."
              },
              "id": {
                "type": "string",
                "description": "Exact product id (from resolve_product or a question's options)."
              },
              "quantity": {
                "type": "integer",
                "minimum": 1,
                "maximum": 16
              },
              "for": {
                "type": [
                  "string",
                  "integer"
                ],
                "description": "Purchases only: which item this part is for (index or name), when the plan has several devices."
              },
              "config": {
                "type": "object",
                "description": "Setup items only: current configuration, e.g. {\"memory_modules\": [{\"capacity_gb\": 8}], \"installed_drives\": 1, \"replace_memory\": true}."
              }
            }
          }
        ]
      },
      "description": "What the person already owns (devices, appliances, tools, hubs) with exact model numbers, plus current configuration."
    },
    "purchase": {
      "type": "array",
      "minItems": 1,
      "maxItems": 25,
      "items": {
        "anyOf": [
          {
            "type": "string",
            "description": "Exact model number or name."
          },
          {
            "type": "object",
            "properties": {
              "text": {
                "type": "string",
                "description": "Exact model number or name, or key specs."
              },
              "id": {
                "type": "string",
                "description": "Exact product id (from resolve_product or a question's options)."
              },
              "quantity": {
                "type": "integer",
                "minimum": 1,
                "maximum": 16
              },
              "for": {
                "type": [
                  "string",
                  "integer"
                ],
                "description": "Purchases only: which item this part is for (index or name), when the plan has several devices."
              },
              "config": {
                "type": "object",
                "description": "Setup items only: current configuration, e.g. {\"memory_modules\": [{\"capacity_gb\": 8}], \"installed_drives\": 1, \"replace_memory\": true}."
              }
            }
          }
        ]
      },
      "description": "Everything being considered for purchase: parts, accessories or new devices, with quantities."
    }
  },
  "required": [
    "purchase"
  ],
  "description": "The same input as validate_purchase_plan."
}

출력 스키마

{
  "type": "object"
}
🟢plan_upgrade(model, id, goal)

What can be upgraded on this device and with what: memory (type, slots, maximum), storage (M.2 slots, lengths, PCIe generation), power, CPU and cooling for motherboards, graphics card and cooler clearance for PC cases, plus the parts in our graph that fit (verified first) and the manufacturer's notes.

입력 스키마

{
  "type": "object",
  "properties": {
    "model": {
      "type": "string",
      "description": "The device's exact model number or name (laptop, motherboard, case, camera, tool...)."
    },
    "id": {
      "type": "string",
      "description": "Or its product id."
    },
    "goal": {
      "type": "string",
      "description": "Optional: what the person wants, e.g. 'more memory for video editing'."
    }
  }
}

출력 스키마

{
  "type": "object"
}
🟢identify_from_photo(image, hint)

Read the brand, model and part numbers from a photo of a label or nameplate and match them to products. Matches are returned as candidates, with what was read. The photo isn't stored.

입력 스키마

{
  "type": "object",
  "properties": {
    "image": {
      "type": "string",
      "description": "A photo of the label or nameplate as a data URL (data:image/jpeg;base64,...), under 4 MB."
    },
    "hint": {
      "type": "string",
      "description": "Optional context, e.g. 'refrigerator label inside the door'."
    }
  },
  "required": [
    "image"
  ]
}

출력 스키마

{
  "type": "object"
}
🟢recheck_plan(plan_id)

Re-run a saved purchase plan against today's data before ordering, and see what changed since it was issued: decisions, product records, or receipt status.

입력 스키마

{
  "type": "object",
  "properties": {
    "plan_id": {
      "type": "string",
      "description": "The plan_id from validate_purchase_plan."
    }
  },
  "required": [
    "plan_id"
  ]
}

출력 스키마

{
  "type": "object"
}
🟢check_batch(checks)

Up to 25 independent compatibility checks in one call (e.g. ranking candidate products for one device). Each result has its own decision, evidence and receipt.

입력 스키마

{
  "type": "object",
  "properties": {
    "checks": {
      "type": "array",
      "minItems": 1,
      "maxItems": 25,
      "items": {
        "type": "object",
        "required": [
          "existing",
          "candidate"
        ],
        "properties": {
          "existing": {
            "type": "string",
            "description": "What the person already has, ideally with the exact model number, e.g. 'Lenovo ThinkPad T480', 'Sony A7 IV', 'DeWalt DCD800', 'HP OfficeJet Pro 9015e', 'iPhone 16 Pro', 'HomePod mini'."
          },
          "candidate": {
            "type": "string",
            "description": "What they want to buy: a model/part number or key specs, e.g. 'Crucial CT16G4SFRA32A', '1TB M.2 2230 NVMe', 'DCB205', 'HP 962XL', 'Canon RF 24-105mm f/4L', 'Eve Energy'."
          },
          "detail": {
            "type": "string",
            "description": "Optional extra identifiers: machine type, revision, year, region, serial range."
          },
          "existing_id": {
            "type": "string",
            "description": "Optional: an exact product id (from resolve_product, suggestions or a candidates list) instead of existing text."
          },
          "candidate_id": {
            "type": "string",
            "description": "Optional: an exact product id instead of candidate text."
          }
        }
      }
    }
  },
  "required": [
    "checks"
  ]
}

출력 스키마

{
  "type": "object"
}
🟢check_compatibility(existing, candidate, detail, existing_id, candidate_id)

Will this exact part or accessory work with that exact device? Use before recommending or buying. Covers anything that has to fit, plug in, mount, run on or charge with something someone owns. Verified catalog (specs checked against cited manufacturer sources): computers & consoles (RAM, M.2 SSDs, USB-C chargers), phones/tablets/watches (USB-C PD, MagSafe, Qi2, watch bands), cameras (lens mounts, adapters, batteries, memory cards), cordless power tools (battery platforms), printers (ink, toner, drums), appliances (refrigerator water and air filters, installation fit), vacuums (bags, filters, batteries, robot-vacuum parts), air quality (purifier filters, HVAC media, humidifier pads), e-bikes (batteries and chargers by drive system), smart home (Matter, Thread, Zigbee, hubs, bulb bases), PC building (CPU sockets, cooler mounts, memory, clearances, power), cars & EV charging (tire sizes by trim, NACS/J1772/CCS1 and approved adapters, home chargers; a starter set of models) and TVs, consoles & streaming (VESA mounts, weight and screen size, console generations, app platforms). Products outside the catalog in any category are read by AI in terms of the same standards and returned as unverified. Returns a decision (supported / conditional / incompatible / insufficient_evidence), the rules checked, caveats, required accessories, the questions to ask when it can't decide, evidence links and a signed receipt. When the text matches several models it returns each candidate's answer.

입력 스키마

{
  "type": "object",
  "properties": {
    "existing": {
      "type": "string",
      "description": "What the person already has, ideally with the exact model number, e.g. 'Lenovo ThinkPad T480', 'Sony A7 IV', 'DeWalt DCD800', 'HP OfficeJet Pro 9015e', 'iPhone 16 Pro', 'HomePod mini'."
    },
    "candidate": {
      "type": "string",
      "description": "What they want to buy: a model/part number or key specs, e.g. 'Crucial CT16G4SFRA32A', '1TB M.2 2230 NVMe', 'DCB205', 'HP 962XL', 'Canon RF 24-105mm f/4L', 'Eve Energy'."
    },
    "detail": {
      "type": "string",
      "description": "Optional extra identifiers: machine type, revision, year, region, serial range."
    },
    "existing_id": {
      "type": "string",
      "description": "Optional: an exact product id (from resolve_product, suggestions or a candidates list) instead of existing text."
    },
    "candidate_id": {
      "type": "string",
      "description": "Optional: an exact product id instead of candidate text."
    }
  },
  "required": [
    "existing",
    "candidate"
  ]
}

출력 스키마

{
  "type": "object",
  "properties": {
    "check_id": {
      "type": "string"
    },
    "verdict": {
      "type": "string",
      "enum": [
        "compatible",
        "compatible_with_caveats",
        "incompatible",
        "uncertain",
        "needs_detail"
      ]
    },
    "decision": {
      "type": "string",
      "enum": [
        "supported",
        "conditional",
        "incompatible",
        "insufficient_evidence"
      ],
      "description": "supported | conditional | incompatible | insufficient_evidence. Act on this, not on confidence alone."
    },
    "decision_help": {
      "type": "string"
    },
    "conditions": {
      "type": "array",
      "items": {
        "type": "object"
      },
      "description": "What must be true for a conditional answer (accessory, dependency)."
    },
    "required_accessories": {
      "type": "array",
      "items": {
        "type": "object",
        "properties": {
          "name": {
            "type": "string"
          },
          "why": {
            "type": "string"
          }
        }
      }
    },
    "questions": {
      "type": "array",
      "items": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string"
          },
          "ask": {
            "type": "string"
          },
          "blocking": {
            "type": "boolean"
          },
          "answer_with": {
            "type": "string"
          },
          "options": {
            "type": "array",
            "items": {
              "type": "object"
            }
          }
        }
      },
      "description": "Exactly what to ask, measure or look up next. blocking=true means no decision until answered."
    },
    "constraints": {
      "type": "array",
      "items": {
        "type": "object",
        "properties": {
          "name": {
            "type": "string"
          },
          "value": {}
        }
      }
    },
    "candidates": {
      "type": "object",
      "description": "Present when the text matched several models: each option with its own verdict."
    },
    "fit": {
      "type": [
        "boolean",
        "null"
      ]
    },
    "confidence": {
      "type": "number",
      "minimum": 0,
      "maximum": 1,
      "description": "Evidence score from fixed rules (source tier, rule strength). Not a calibrated probability: act on decision, conditions and questions."
    },
    "verified": {
      "type": "boolean",
      "description": "True only when every spec came from a manufacturer source with a recorded check date."
    },
    "summary": {
      "type": "string"
    },
    "checks": {
      "type": "array",
      "items": {
        "type": "object",
        "properties": {
          "rule": {
            "type": "string"
          },
          "ok": {
            "type": [
              "boolean",
              "null"
            ]
          },
          "detail": {
            "type": "string"
          }
        }
      }
    },
    "caveats": {
      "type": "array",
      "items": {
        "type": "string"
      }
    },
    "requirements": {
      "type": "object"
    },
    "missing": {
      "type": "array",
      "items": {
        "type": "string"
      }
    },
    "evidence": {
      "type": "array",
      "items": {
        "type": "object",
        "properties": {
          "type": {
            "type": "string"
          },
          "text": {
            "type": "string"
          },
          "url": {
            "type": [
              "string",
              "null"
            ]
          }
        }
      }
    },
    "next_step": {
      "type": "string"
    },
    "valid_until": {
      "type": "string",
      "description": "When this answer should be re-checked (based on how fresh its sources are)."
    },
    "receipt": {
      "type": [
        "object",
        "null"
      ],
      "description": "Signed receipt (EdDSA JWS) proving Tethered Trust issued this verdict unaltered. Not a guarantee the verdict is correct.",
      "properties": {
        "id": {
          "type": "string"
        },
        "jws": {
          "type": "string"
        },
        "valid_until": {
          "type": "string"
        },
        "url": {
          "type": "string"
        }
      }
    },
    "notice": {
      "type": "string"
    },
    "terms": {
      "type": "string"
    }
  },
  "required": [
    "check_id",
    "verdict",
    "decision",
    "confidence",
    "summary"
  ]
}
🟢find_parts(model, part_type)

Which parts and accessories fit this model? OEM parts first, then verified alternatives: e.g. a refrigerator's water filter, a printer's cartridges, a camera's lenses and batteries, a tool's batteries, or the RAM, SSDs and chargers that fit a computer.

입력 스키마

{
  "type": "object",
  "properties": {
    "model": {
      "type": "string",
      "description": "Model number of the device, tool, camera, printer or appliance, e.g. 'GFE28GYNFS', 'ThinkPad T480', 'Canon EOS R6 Mark II', 'Milwaukee 2904-20', 'Brother HL-L2350DW'."
    },
    "part_type": {
      "type": "string",
      "description": "Optional filter, e.g. 'water filter', 'memory', 'ssd', 'charger', 'battery', 'lens', 'ink', 'toner', 'band'."
    }
  },
  "required": [
    "model"
  ]
}

출력 스키마

{
  "type": "object",
  "properties": {
    "check_id": {
      "type": "string"
    },
    "found": {
      "type": "boolean"
    },
    "model": {},
    "total": {
      "type": "number"
    },
    "message": {
      "type": "string"
    },
    "parts": {
      "type": "array",
      "items": {
        "type": "object",
        "properties": {
          "part_id": {
            "type": "string"
          },
          "name": {
            "type": "string"
          },
          "part_type": {
            "type": "string"
          },
          "role": {
            "type": "string"
          },
          "verified": {
            "type": "boolean"
          },
          "note": {
            "type": [
              "string",
              "null"
            ]
          },
          "caveats": {
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "source_url": {
            "type": [
              "string",
              "null"
            ]
          }
        }
      }
    },
    "notice": {
      "type": "string"
    },
    "terms": {
      "type": "string"
    }
  },
  "required": [
    "check_id",
    "found",
    "parts",
    "message"
  ]
}
🟢check_fit(product, category, product_dimensions, opening, needs, ...)

Will this appliance physically fit this space? Compares dimensions plus typical installation clearances and required connections (power, water, gas).

입력 스키마

{
  "type": "object",
  "properties": {
    "product": {
      "type": "string",
      "description": "What's being installed, e.g. '36-inch French-door refrigerator'. Used to pick typical clearances."
    },
    "category": {
      "type": "string",
      "enum": [
        "refrigerator",
        "dishwasher",
        "range",
        "washer",
        "dryer",
        "other"
      ]
    },
    "product_dimensions": {
      "type": "object",
      "description": "Width, height and depth of the product (from its spec sheet). Any subset is accepted; missing axes come back as 'missing'.",
      "properties": {
        "width": {
          "type": "string",
          "description": "A number in inches (e.g. \"35.75\") or text with units (\"35 3/4 in\", \"90.8 cm\", \"908 mm\")."
        },
        "height": {
          "type": "string",
          "description": "A number in inches (e.g. \"35.75\") or text with units (\"35 3/4 in\", \"90.8 cm\", \"908 mm\")."
        },
        "depth": {
          "type": "string",
          "description": "A number in inches (e.g. \"35.75\") or text with units (\"35 3/4 in\", \"90.8 cm\", \"908 mm\")."
        }
      }
    },
    "opening": {
      "type": "object",
      "description": "Width, height and depth of the space it goes into. Any subset is accepted; missing axes come back as 'missing'.",
      "properties": {
        "width": {
          "type": "string",
          "description": "A number in inches (e.g. \"35.75\") or text with units (\"35 3/4 in\", \"90.8 cm\", \"908 mm\")."
        },
        "height": {
          "type": "string",
          "description": "A number in inches (e.g. \"35.75\") or text with units (\"35 3/4 in\", \"90.8 cm\", \"908 mm\")."
        },
        "depth": {
          "type": "string",
          "description": "A number in inches (e.g. \"35.75\") or text with units (\"35 3/4 in\", \"90.8 cm\", \"908 mm\")."
        }
      }
    },
    "needs": {
      "type": "string",
      "description": "Connections the product needs, e.g. '120V, water line' or '240V'."
    },
    "has": {
      "type": "string",
      "description": "Connections available at the location."
    }
  },
  "required": [
    "opening"
  ]
}

출력 스키마

{
  "type": "object",
  "properties": {
    "check_id": {
      "type": "string"
    },
    "verdict": {
      "type": "string",
      "enum": [
        "compatible",
        "compatible_with_caveats",
        "incompatible",
        "uncertain",
        "needs_detail"
      ]
    },
    "decision": {
      "type": "string",
      "enum": [
        "supported",
        "conditional",
        "incompatible",
        "insufficient_evidence"
      ],
      "description": "supported | conditional | incompatible | insufficient_evidence. Act on this, not on confidence alone."
    },
    "decision_help": {
      "type": "string"
    },
    "conditions": {
      "type": "array",
      "items": {
        "type": "object"
      },
      "description": "What must be true for a conditional answer (accessory, dependency)."
    },
    "required_accessories": {
      "type": "array",
      "items": {
        "type": "object",
        "properties": {
          "name": {
            "type": "string"
          },
          "why": {
            "type": "string"
          }
        }
      }
    },
    "questions": {
      "type": "array",
      "items": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string"
          },
          "ask": {
            "type": "string"
          },
          "blocking": {
            "type": "boolean"
          },
          "answer_with": {
            "type": "string"
          },
          "options": {
            "type": "array",
            "items": {
              "type": "object"
            }
          }
        }
      },
      "description": "Exactly what to ask, measure or look up next. blocking=true means no decision until answered."
    },
    "constraints": {
      "type": "array",
      "items": {
        "type": "object",
        "properties": {
          "name": {
            "type": "string"
          },
          "value": {}
        }
      }
    },
    "candidates": {
      "type": "object",
      "description": "Present when the text matched several models: each option with its own verdict."
    },
    "fit": {
      "type": [
        "boolean",
        "null"
      ]
    },
    "confidence": {
      "type": "number",
      "minimum": 0,
      "maximum": 1,
      "description": "Evidence score from fixed rules (source tier, rule strength). Not a calibrated probability: act on decision, conditions and questions."
    },
    "verified": {
      "type": "boolean",
      "description": "True only when every spec came from a manufacturer source with a recorded check date."
    },
    "summary": {
      "type": "string"
    },
    "checks": {
      "type": "array",
      "items": {
        "type": "object",
        "properties": {
          "rule": {
            "type": "string"
          },
          "ok": {
            "type": [
              "boolean",
              "null"
            ]
          },
          "detail": {
            "type": "string"
          }
        }
      }
    },
    "caveats": {
      "type": "array",
      "items": {
        "type": "string"
      }
    },
    "requirements": {
      "type": "object"
    },
    "missing": {
      "type": "array",
      "items": {
        "type": "string"
      }
    },
    "evidence": {
      "type": "array",
      "items": {
        "type": "object",
        "properties": {
          "type": {
            "type": "string"
          },
          "text": {
            "type": "string"
          },
          "url": {
            "type": [
              "string",
              "null"
            ]
          }
        }
      }
    },
    "next_step": {
      "type": "string"
    },
    "valid_until": {
      "type": "string",
      "description": "When this answer should be re-checked (based on how fresh its sources are)."
    },
    "receipt": {
      "type": [
        "object",
        "null"
      ],
      "description": "Signed receipt (EdDSA JWS) proving Tethered Trust issued this verdict unaltered. Not a guarantee the verdict is correct.",
      "properties": {
        "id": {
          "type": "string"
        },
        "jws": {
          "type": "string"
        },
        "valid_until": {
          "type": "string"
        },
        "url": {
          "type": "string"
        }
      }
    },
    "notice": {
      "type": "string"
    },
    "terms": {
      "type": "string"
    }
  },
  "required": [
    "check_id",
    "verdict",
    "decision",
    "confidence",
    "summary"
  ]
}
🟢verify_receipt(receipt_id, jws)

Check a Tethered Trust receipt: is the signature ours, is it still within valid_until, and have the records behind it changed since? A valid receipt proves what we said and when; it doesn't guarantee the verdict was right.

입력 스키마

{
  "type": "object",
  "properties": {
    "receipt_id": {
      "type": "string",
      "description": "The receipt id (rcpt_...) from a check."
    },
    "jws": {
      "type": "string",
      "description": "Or the full signed receipt string, if someone handed it to you."
    }
  }
}

출력 스키마

{
  "type": "object",
  "properties": {
    "signature_valid": {
      "type": "boolean"
    },
    "issued_by_tethered_trust": {
      "type": "boolean"
    },
    "status": {
      "type": "string",
      "enum": [
        "valid",
        "expired",
        "revoked",
        "data_changed",
        "invalid_signature",
        "unknown_key"
      ]
    },
    "explain": {
      "type": "string"
    },
    "receipt_id": {
      "type": "string"
    },
    "claim": {
      "type": "object"
    },
    "issued_at": {
      "type": "string"
    },
    "valid_until": {
      "type": "string"
    },
    "changed_subjects": {
      "type": "array",
      "items": {
        "type": "object"
      }
    },
    "disclaimer": {
      "type": "string"
    }
  },
  "required": [
    "signature_valid",
    "status"
  ]
}
🟢report_outcome(check_id, outcome, note, evidence)

After a purchase, report whether it actually fit. Free, safe to call, and only the first report per check counts. Reports are weighted by level: self_reported (website), agent_reported (anonymous API/MCP), partner_reported (API key holders) and order_confirmed (order evidence we've confirmed). Only the last two can raise future confidence.

입력 스키마

{
  "type": "object",
  "properties": {
    "check_id": {
      "type": "string",
      "description": "The check_id returned by check_compatibility, find_parts or check_fit."
    },
    "outcome": {
      "type": "string",
      "enum": [
        "fit",
        "no_fit"
      ]
    },
    "note": {
      "type": "string",
      "description": "What happened, briefly."
    },
    "evidence": {
      "type": "object",
      "description": "Optional order details we can confirm later (raises the report to 'order_confirmed' once reviewed). Order references only; payment and personal details aren't accepted.",
      "properties": {
        "order_id": {
          "type": "string"
        },
        "merchant": {
          "type": "string"
        },
        "purchased_at": {
          "type": "string"
        },
        "delivered_at": {
          "type": "string"
        },
        "returned_at": {
          "type": "string"
        },
        "product_url": {
          "type": "string"
        }
      }
    }
  },
  "required": [
    "check_id",
    "outcome"
  ]
}

출력 스키마

{
  "type": "object",
  "properties": {
    "recorded": {
      "type": "boolean"
    },
    "level": {
      "type": [
        "string",
        "null"
      ],
      "enum": [
        "self_reported",
        "agent_reported",
        "partner_reported",
        "order_confirmed",
        null
      ]
    },
    "evidence_received": {
      "type": "boolean"
    },
    "message": {
      "type": "string"
    }
  },
  "required": [
    "recorded",
    "message"
  ]
}

커뮤니티

이 서버 평가하기

증거

최근 관측

검증됨버전이 기록되지 않음도구 18개