HandledIQ: find and book home service

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

Sollte ich dies verwenden

Qualität und Sicherheit

A
Qualität der Beschreibung
100%
Vollständigkeit des Schemas
100%
Qualität der Benennung
90%
Risiko der Vergiftung
100%
Übereinstimmung der Berechtigungen
100%
Einhaltung des Protokolls
100%

Basierend auf einer automatisierten Analyse der Tool-Definitionen und der Einhaltung des Protokolls.

Kontextkosten

~3,171Tokens (Tool-Definitionen)
~5.0 KBTypische Antwortgröße
Erhebliche Auswirkung auf die Aufmerksamkeit (2.48% von 128k Kontext)

Dies ist die ungefähre Anzahl der Tokens, die jedes Mal verbraucht werden, wenn die Tools des Servers in den Kontext eines Modells geladen werden. Höhere Werte verringern die Aufmerksamkeit, die für andere Aufgaben verfügbar ist.

Installieren

Installation mit einem Klick

Fügen Sie dies Ihrer Datei `claude_desktop_config.json` hinzu:

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

Remote-Endpunkte

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

Was es kann

Tool-Inventar

Tools (6)

🟢 Nur lesen🟡 Schreiben🔴 Löschen⚪ Unbekannt
🟢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.

Eingabe-Schema

{
  "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
}

Ausgabe-Schema

{
  "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.

Eingabe-Schema

{
  "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
}

Ausgabe-Schema

{
  "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.

Eingabe-Schema

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

Ausgabe-Schema

{
  "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.

Eingabe-Schema

{
  "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
}

Ausgabe-Schema

{
  "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.

Eingabe-Schema

{
  "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
}

Ausgabe-Schema

{
  "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.

Eingabe-Schema

{
  "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
}

Ausgabe-Schema

{
  "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"
  ]
}

Community

Diesen Server bewerten

Nachweis

Aktuelle Beobachtungen

verifiziertVersion nicht aufgezeichnet6 Tools