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개