HandledIQ: find and book home service

Find a home service shop near a US house: its book price, real open times, a held time.

使うべきか

品質と安全性

A
説明の品質
100%
スキーマの完全性
100%
命名の品質
90%
ポイズニングのリスク
100%
権限の一致
100%
プロトコルへの準拠
100%

ツール定義とプロトコルへの準拠に関する自動分析に基づいています。

コンテキストコスト

~3,171トークン数(ツール定義)
~5.0 KB一般的なレスポンスサイズ
注意への影響は大きい(128k コンテキストの 2.48%)

これは、サーバーのツールがモデルのコンテキストに読み込まれるたびに消費されるおおよそのトークン数です。数が多いほど、ほかのタスクに使える注意が減ります。

インストール

ワンクリックインストール

これを `claude_desktop_config.json` ファイルに追加してください:

{
  "mcpServers": {
    "find-help": {
      "url": "https://app.handlediq.com/agents/mcp"
    }
  }
}

リモートエンドポイント

https://app.handlediq.com/agents/mcpstreamable-http

できること

ツール一覧

ツール(6)

🟢 読み取り専用🟡 書き込み🔴 削除⚪ 不明
🟢find_help(need, zip, assistant, budget_dollars, day)

The shops on HandledIQ near a US ZIP code that can do what the person needs: each with its book prices, its soonest open times, its signed record and a quote_id to hold a time with. Soonest first, three at most.

入力スキーマ

{
  "type": "object",
  "properties": {
    "need": {
      "type": "string",
      "description": "What the person needs, in a line, like: AC not cooling, a roof leak, ants in the kitchen, or a couch to haul away."
    },
    "zip": {
      "type": "string",
      "description": "The house's 5-digit US ZIP code."
    },
    "assistant": {
      "type": "string",
      "description": "Your own name, as the person you act for knows you, like Muse. It goes in the text the shop sends them."
    },
    "budget_dollars": {
      "type": "number",
      "description": "Optional. The most the person wants to pay, in dollars."
    },
    "day": {
      "type": "string",
      "description": "Optional. The first day that works for the person, YYYY-MM-DD."
    }
  },
  "required": [
    "need",
    "zip",
    "assistant"
  ],
  "additionalProperties": false
}

出力スキーマ

{
  "type": "object",
  "properties": {
    "zip": {
      "type": "string"
    },
    "shops": {
      "type": "array",
      "items": {
        "type": "object",
        "properties": {
          "shop": {
            "type": "string"
          },
          "business_id": {
            "type": "string"
          },
          "quote_id": {
            "type": "string"
          },
          "visit": {
            "type": "boolean"
          },
          "prices": {
            "type": "array",
            "items": {
              "type": "object",
              "properties": {
                "option_id": {
                  "type": "string"
                },
                "name": {
                  "type": "string"
                },
                "detail": {
                  "type": "string"
                },
                "price_cents": {
                  "type": "integer"
                },
                "price": {
                  "type": "string"
                },
                "within_budget": {
                  "type": "boolean"
                }
              },
              "required": [
                "option_id",
                "name",
                "price_cents",
                "price"
              ]
            }
          },
          "soonest": {
            "type": "object",
            "properties": {
              "time_id": {
                "type": "string"
              },
              "when": {
                "type": "string"
              },
              "label": {
                "type": "string",
                "description": "The time as a button says it, like: Wed 8 to 10 AM."
              },
              "starts_at": {
                "type": "string",
                "format": "date-time"
              },
              "ends_at": {
                "type": "string",
                "format": "date-time"
              },
              "tech": {
                "type": [
                  "string",
                  "null"
                ]
              }
            },
            "required": [
              "time_id",
              "when",
              "starts_at",
              "ends_at"
            ]
          },
          "times": {
            "type": "array",
            "items": {
              "type": "object",
              "properties": {
                "time_id": {
                  "type": "string"
                },
                "when": {
                  "type": "string"
                },
                "label": {
                  "type": "string",
                  "description": "The time as a button says it, like: Wed 8 to 10 AM."
                },
                "starts_at": {
                  "type": "string",
                  "format": "date-time"
                },
                "ends_at": {
                  "type": "string",
                  "format": "date-time"
                },
                "tech": {
                  "type": [
                    "string",
                    "null"
                  ]
                }
              },
              "required": [
                "time_id",
                "when",
                "starts_at",
                "ends_at"
              ]
            }
          },
          "holds_times": {
            "type": "boolean"
          },
          "record": {
            "type": [
              "object",
              "null"
            ],
            "description": "The shop's service record: counts from its own records (work finished, callbacks by cause, arrivals kept, houses served again, homeowner ratings, guarantee), each with how many records it rests on. Null until its owner shares it."
          },
          "signed_record": {
            "type": "string",
            "description": "The record as a W3C Verifiable Credential in a compact JWS (typ vc+jwt, alg Ed25519) over its RFC 8785 form."
          },
          "door": {
            "type": "string"
          }
        },
        "required": [
          "shop",
          "business_id",
          "quote_id",
          "prices",
          "soonest",
          "door"
        ]
      }
    },
    "check_records": {
      "type": "object",
      "description": "How to check each signed_record: every shop's key, by its issuer's address."
    },
    "next": {
      "type": "string"
    }
  },
  "required": [
    "zip",
    "shops",
    "next"
  ]
}
🟢hold_time(quote_id, option_id, time_id, name, mobile, ...)

Holds one open time from a quote for 10 minutes and has the shop text the person a link to book it or say it was not them. Nothing is booked until the person taps yes. The same call again, while it is held, texts no one. The quote_id may come from any shop find_help or get_quote gave.

入力スキーマ

{
  "type": "object",
  "properties": {
    "quote_id": {
      "type": "string",
      "description": "The quote_id price gave."
    },
    "option_id": {
      "type": "string",
      "description": "One of the quote's prices, by its option_id."
    },
    "time_id": {
      "type": "string",
      "description": "One of the quote's times, by its time_id."
    },
    "name": {
      "type": "string",
      "description": "The person's name."
    },
    "mobile": {
      "type": "string",
      "description": "The person's US mobile number, with its area code. The shop texts it once."
    },
    "street": {
      "type": "string",
      "description": "The street address of the house, with its number."
    },
    "unit": {
      "type": "string",
      "description": "Optional. The unit or apartment."
    }
  },
  "required": [
    "quote_id",
    "option_id",
    "time_id",
    "name",
    "mobile",
    "street"
  ],
  "additionalProperties": false
}

出力スキーマ

{
  "type": "object",
  "properties": {
    "quote_id": {
      "type": "string"
    },
    "state": {
      "type": "string",
      "enum": [
        "priced",
        "waits_for_owner",
        "waiting",
        "ran_out",
        "declined",
        "booked",
        "canceled",
        "closed"
      ]
    },
    "said": {
      "type": "string"
    },
    "held_until": {
      "type": "string",
      "format": "date-time"
    },
    "minutes_left": {
      "type": "integer"
    },
    "visit": {
      "type": "object",
      "description": "The booked visit as it stands now: its time, its tech, and what has happened since the yes.",
      "properties": {
        "when": {
          "type": "string"
        },
        "starts_at": {
          "type": "string",
          "format": "date-time"
        },
        "ends_at": {
          "type": "string",
          "format": "date-time"
        },
        "tech": {
          "type": [
            "string",
            "null"
          ]
        },
        "now": {
          "type": "string",
          "enum": [
            "scheduled",
            "on_the_way",
            "arrived",
            "finished",
            "canceled"
          ],
          "description": "Where the visit has got to, from the tech's own taps and the visit's close."
        },
        "on_the_way_at": {
          "type": "string",
          "format": "date-time"
        },
        "arrived_at": {
          "type": "string",
          "format": "date-time"
        },
        "finished_at": {
          "type": "string",
          "format": "date-time"
        },
        "canceled_at": {
          "type": "string",
          "format": "date-time"
        },
        "promise": {
          "type": "object",
          "description": "The time promised now, and how the arrival measured against it: open (its time has not ended), kept (arrived inside it), early or late (by minutes), missed, canceled, or unrecorded.",
          "properties": {
            "window_start": {
              "type": "string",
              "format": "date-time"
            },
            "window_end": {
              "type": "string",
              "format": "date-time"
            },
            "standing": {
              "type": "string",
              "enum": [
                "open",
                "kept",
                "early",
                "late",
                "missed",
                "canceled",
                "unrecorded"
              ]
            },
            "minutes": {
              "type": "integer"
            }
          },
          "required": [
            "window_start",
            "window_end",
            "standing"
          ]
        }
      },
      "required": [
        "when",
        "starts_at",
        "ends_at"
      ]
    }
  },
  "required": [
    "quote_id",
    "state",
    "said"
  ]
}
🟢booking_status(quote_id)

Where a quote stands: priced, waiting on the person (with minutes left on the hold), booked (when and with whom), said it was not them, or the hold ran out. Once booked, what happened after: the tech on the way, arrived (and whether inside the time promised), the visit finished, or canceled by the shop.

入力スキーマ

{
  "type": "object",
  "properties": {
    "quote_id": {
      "type": "string",
      "description": "The quote_id price gave."
    }
  },
  "required": [
    "quote_id"
  ],
  "additionalProperties": false
}

出力スキーマ

{
  "type": "object",
  "properties": {
    "quote_id": {
      "type": "string"
    },
    "state": {
      "type": "string",
      "enum": [
        "priced",
        "waits_for_owner",
        "waiting",
        "ran_out",
        "declined",
        "booked",
        "canceled",
        "closed"
      ]
    },
    "said": {
      "type": "string"
    },
    "held_until": {
      "type": "string",
      "format": "date-time"
    },
    "minutes_left": {
      "type": "integer"
    },
    "visit": {
      "type": "object",
      "description": "The booked visit as it stands now: its time, its tech, and what has happened since the yes.",
      "properties": {
        "when": {
          "type": "string"
        },
        "starts_at": {
          "type": "string",
          "format": "date-time"
        },
        "ends_at": {
          "type": "string",
          "format": "date-time"
        },
        "tech": {
          "type": [
            "string",
            "null"
          ]
        },
        "now": {
          "type": "string",
          "enum": [
            "scheduled",
            "on_the_way",
            "arrived",
            "finished",
            "canceled"
          ],
          "description": "Where the visit has got to, from the tech's own taps and the visit's close."
        },
        "on_the_way_at": {
          "type": "string",
          "format": "date-time"
        },
        "arrived_at": {
          "type": "string",
          "format": "date-time"
        },
        "finished_at": {
          "type": "string",
          "format": "date-time"
        },
        "canceled_at": {
          "type": "string",
          "format": "date-time"
        },
        "promise": {
          "type": "object",
          "description": "The time promised now, and how the arrival measured against it: open (its time has not ended), kept (arrived inside it), early or late (by minutes), missed, canceled, or unrecorded.",
          "properties": {
            "window_start": {
              "type": "string",
              "format": "date-time"
            },
            "window_end": {
              "type": "string",
              "format": "date-time"
            },
            "standing": {
              "type": "string",
              "enum": [
                "open",
                "kept",
                "early",
                "late",
                "missed",
                "canceled",
                "unrecorded"
              ]
            },
            "minutes": {
              "type": "integer"
            }
          },
          "required": [
            "window_start",
            "window_end",
            "standing"
          ]
        }
      },
      "required": [
        "when",
        "starts_at",
        "ends_at"
      ]
    }
  },
  "required": [
    "quote_id",
    "state",
    "said"
  ]
}
🟢request_service(business_id)

Opens HandledIQ's quote window on one shop, for the person themselves: they pick what they need, see the shop's own book price and real open times, and hold a time; the shop texts them and only their tap books it. Returns who the shop is and the work it prices.

入力スキーマ

{
  "type": "object",
  "properties": {
    "business_id": {
      "type": "string",
      "description": "The shop's business_id: its provider_business_id in HandledIQ's business feed, or a find_help answer's."
    }
  },
  "required": [
    "business_id"
  ],
  "additionalProperties": false
}

出力スキーマ

{
  "type": "object",
  "properties": {
    "business_id": {
      "type": "string"
    },
    "shop": {
      "type": "string"
    },
    "trade": {
      "type": [
        "string",
        "null"
      ]
    },
    "phone": {
      "type": "string"
    },
    "prices_answer_now": {
      "type": "boolean"
    },
    "holds_times": {
      "type": "boolean"
    },
    "price_page": {
      "type": "string"
    },
    "work": {
      "type": "array",
      "items": {
        "type": "object",
        "properties": {
          "kind": {
            "type": "string"
          },
          "label": {
            "type": "string"
          },
          "detail": {
            "type": "string"
          },
          "icon": {
            "type": "string"
          },
          "title": {
            "type": "string"
          }
        },
        "required": [
          "kind",
          "label"
        ]
      },
      "description": "The shop's kinds of work, the three it prices most first, then Something else (visit)."
    },
    "next": {
      "type": "string"
    },
    "rules": {
      "type": "string"
    }
  },
  "required": [
    "business_id",
    "shop",
    "holds_times",
    "work",
    "price_page"
  ]
}
🟢get_quote(business_id, need, assistant, budget_dollars, day, ...)

The shop's own book prices for what the person needs and its next real open times. Returns a quote_id to hold a time with. visit: no fixed price for exactly that, so the price is the shop's visit to find the problem. A price over the shop's limit waits for the owner; work that is not the shop's trade gets no quote. The shop is the one business_id names; kind is one of the kinds request_service gave, or leave it out and say the need in words.

入力スキーマ

{
  "type": "object",
  "properties": {
    "business_id": {
      "type": "string",
      "description": "The shop's business_id: its provider_business_id in HandledIQ's business feed, or a find_help answer's."
    },
    "need": {
      "type": "string",
      "description": "What the person needs, in a line, like: AC check, a roof leak, ants in the kitchen, or a couch to haul away."
    },
    "assistant": {
      "type": "string",
      "description": "Your own name, as the person you act for knows you, like Muse. It goes in the text the shop sends them."
    },
    "budget_dollars": {
      "type": "number",
      "description": "Optional. The most the person wants to pay, in dollars."
    },
    "day": {
      "type": "string",
      "description": "Optional. The first day that works for the person, YYYY-MM-DD; times start that day."
    },
    "kind": {
      "type": "string",
      "description": "Optional. One of the shop's kinds of work, as request_service gave them (work[].kind)."
    }
  },
  "required": [
    "business_id",
    "need",
    "assistant"
  ],
  "additionalProperties": false
}

出力スキーマ

{
  "type": "object",
  "properties": {
    "quote_id": {
      "type": [
        "string",
        "null"
      ],
      "description": "Holds a time with hold_time. Null when the shop does not do that kind of work."
    },
    "shop": {
      "type": "string"
    },
    "waits_for_owner": {
      "type": "boolean"
    },
    "visit": {
      "type": "boolean"
    },
    "prices": {
      "type": "array",
      "items": {
        "type": "object",
        "properties": {
          "option_id": {
            "type": "string"
          },
          "name": {
            "type": "string"
          },
          "detail": {
            "type": "string"
          },
          "price_cents": {
            "type": "integer"
          },
          "price": {
            "type": "string"
          },
          "within_budget": {
            "type": "boolean"
          }
        },
        "required": [
          "option_id",
          "name",
          "price_cents",
          "price"
        ]
      }
    },
    "times": {
      "type": "array",
      "items": {
        "type": "object",
        "properties": {
          "time_id": {
            "type": "string"
          },
          "when": {
            "type": "string"
          },
          "label": {
            "type": "string",
            "description": "The time as a button says it, like: Wed 8 to 10 AM."
          },
          "starts_at": {
            "type": "string",
            "format": "date-time"
          },
          "ends_at": {
            "type": "string",
            "format": "date-time"
          },
          "tech": {
            "type": [
              "string",
              "null"
            ]
          }
        },
        "required": [
          "time_id",
          "when",
          "starts_at",
          "ends_at"
        ]
      }
    },
    "holds_times": {
      "type": "boolean"
    },
    "next": {
      "type": "string"
    }
  },
  "required": [
    "quote_id",
    "shop",
    "prices",
    "times",
    "holds_times",
    "next"
  ]
}
🟢verify_record(signed)

Checks a signed record from any HandledIQ shop (a house's, a technician's or a shop's): valid, with who signed it and the record it holds, or not valid and why. Anyone can make the same check with the key at the issuer's id.

入力スキーマ

{
  "type": "object",
  "properties": {
    "signed": {
      "type": "string",
      "description": "The signed form a record came with (signed, or signed_record): a compact JWS, up to a million characters."
    }
  },
  "required": [
    "signed"
  ],
  "additionalProperties": false
}

出力スキーマ

{
  "type": "object",
  "properties": {
    "valid": {
      "type": "boolean"
    },
    "trusted": {
      "type": "boolean"
    },
    "key_status": {
      "type": "string"
    },
    "issuer": {
      "type": "object",
      "properties": {
        "id": {
          "type": "string"
        },
        "name": {
          "type": "string"
        }
      }
    },
    "record": {
      "type": "object"
    },
    "why": {
      "type": "string"
    }
  },
  "required": [
    "valid"
  ]
}

コミュニティ

このサーバーを評価する

エビデンス

最近の観測

検証済みバージョンは記録されていませんツール 6 件