← WebMCP Directory

Tool tree

movetogermany.lol

Travel & EventsTools verified
Website
move to germany, lol — because the paperwork is enough drama. You and your AI agent build your everyday essentials together: supermarket, doctors, dentist & 80 more categories — real data, sorted by…
Explore capabilities
    list_categoriesAnswer

    List all 80+ business categories of the underlying German directory network (slug, label, emoji) plus which ones are pre-selected as everyday essentials. Call this first to learn valid category slugs. Read-only.

    View tool JSON
    {
      "name": "list_categories",
      "kind": "answer",
      "impl": "imperative",
      "description": "List all 80+ business categories of the underlying German directory network (slug, label, emoji) plus which ones are pre-selected as everyday essentials. Call this first to learn valid category slugs. Read-only.",
      "inputSchema": {
        "type": "object",
        "properties": {}
      },
      "page": "/"
    }
    get_profileAnswer

    Read the shared arrival profile: household (solo/couple/family), pet, language needs (en_only/de_ok), mobility (walk/bike/car) and profession. Use it to personalize every decision — categories, job queries, outreach drafts. For null fields, FIRST fill in what you already know about your user from your own memory/context (confirm it briefly), and ask only about genuine gaps — then store via set_profile. Read-only.

    View tool JSON
    {
      "name": "get_profile",
      "kind": "answer",
      "impl": "imperative",
      "description": "Read the shared arrival profile: household (solo/couple/family), pet, language needs (en_only/de_ok), mobility (walk/bike/car) and profession. Use it to personalize every decision — categories, job queries, outreach drafts. For null fields, FIRST fill in what you already know about your user from your own memory/context (confirm it briefly), and ask only about genuine gaps — then store via set_profile. Read-only.",
      "inputSchema": {
        "type": "object",
        "properties": {}
      },
      "page": "/"
    }
    set_profileAction

    Update the shared arrival profile (partial update; only provided fields change). The user sees every change immediately, and relevant categories are auto-added (pet → vet & pet store, family → hospital & tutoring, car → gas station & repair shop, bike → bike repair). Prefer what you already KNOW about your user (your memory/context) — mention what you filled in so they can correct it — and interview only for real gaps. Never guess; the profile stays on this page, share only what is relevant here.

    View tool JSON
    {
      "name": "set_profile",
      "kind": "act",
      "impl": "imperative",
      "description": "Update the shared arrival profile (partial update; only provided fields change). The user sees every change immediately, and relevant categories are auto-added (pet → vet & pet store, family → hospital & tutoring, car → gas station & repair shop, bike → bike repair). Prefer what you already KNOW about your user (your memory/context) — mention what you filled in so they can correct it — and interview only for real gaps. Never guess; the profile stays on this page, share only what is relevant here.",
      "inputSchema": {
        "type": "object",
        "properties": {
          "household": {
            "type": "string",
            "enum": [
              "solo",
              "couple",
              "family"
            ],
            "description": "Who is moving"
          },
          "pet": {
            "type": "string",
            "enum": [
              "none",
              "dog",
              "cat"
            ],
            "description": "Pet in the household"
          },
          "languages": {
            "type": "string",
            "enum": [
              "en_only",
              "de_ok"
            ],
            "description": "en_only = needs English communication"
          },
          "mobility": {
            "type": "string",
            "enum": [
              "walk",
              "bike",
              "car"
            ],
            "description": "Main way of getting around"
          },
          "work": {
            "type": "string",
            "description": "Profession/role, used to prefill job search (e.g. 'python developer')"
          }
        }
      },
      "page": "/"
    }
    set_home_plzAction

    Set the user's new home postal code (German PLZ) — the center of all searches. Call generate_starter_plan or find_nearby afterwards. Changes page state.

    View tool JSON
    {
      "name": "set_home_plz",
      "kind": "act",
      "impl": "imperative",
      "description": "Set the user's new home postal code (German PLZ) — the center of all searches. Call generate_starter_plan or find_nearby afterwards. Changes page state.",
      "inputSchema": {
        "type": "object",
        "properties": {
          "plz": {
            "type": "string",
            "pattern": "^[0-9]{5}$",
            "description": "Five-digit German postal code, e.g. 10115"
          }
        },
        "required": [
          "plz"
        ]
      },
      "page": "/"
    }
    find_nearbyAction

    Search the closest providers of ONE category around the configured PLZ and render them on the page for the user. Returns JSON with name, city, distance in km, phone, website, rating. category must be a slug from list_categories. Requires set_home_plz first.

    View tool JSON
    {
      "name": "find_nearby",
      "kind": "act",
      "impl": "imperative",
      "description": "Search the closest providers of ONE category around the configured PLZ and render them on the page for the user. Returns JSON with name, city, distance in km, phone, website, rating. category must be a slug from list_categories. Requires set_home_plz first.",
      "inputSchema": {
        "type": "object",
        "properties": {
          "category": {
            "type": "string",
            "description": "Category slug, e.g. supermarkt, zahnarzt (dentist), friseur (hairdresser)"
          },
          "limit": {
            "type": "integer",
            "minimum": 1,
            "maximum": 20,
            "description": "Max results (default 5)"
          }
        },
        "required": [
          "category"
        ]
      },
      "page": "/"
    }
    generate_starter_planAction

    The one-step relocation helper: searches the configured PLZ across the essential categories in parallel (or a provided list of category slugs) and puts the CLOSEST provider per category into the shared plan. Existing plan entries are kept. Everything renders on the page immediately; the user can then remove, swap and annotate entries.

    View tool JSON
    {
      "name": "generate_starter_plan",
      "kind": "act",
      "impl": "imperative",
      "description": "The one-step relocation helper: searches the configured PLZ across the essential categories in parallel (or a provided list of category slugs) and puts the CLOSEST provider per category into the shared plan. Existing plan entries are kept. Everything renders on the page immediately; the user can then remove, swap and annotate entries.",
      "inputSchema": {
        "type": "object",
        "properties": {
          "categories": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "description": "Optional list of category slugs; without it the default 12 everyday essentials are used"
          }
        }
      },
      "page": "/"
    }
    add_to_shortlistAction

    Add one concrete provider from the current search results (find_nearby / generate_starter_plan) to the shared plan. Reference it by category slug + exact name.

    View tool JSON
    {
      "name": "add_to_shortlist",
      "kind": "act",
      "impl": "imperative",
      "description": "Add one concrete provider from the current search results (find_nearby / generate_starter_plan) to the shared plan. Reference it by category slug + exact name.",
      "inputSchema": {
        "type": "object",
        "properties": {
          "category": {
            "type": "string",
            "description": "Category slug of the provider"
          },
          "name": {
            "type": "string",
            "description": "Exact name as returned in the search results"
          }
        },
        "required": [
          "category",
          "name"
        ]
      },
      "page": "/"
    }
    remove_from_shortlistAction

    Remove one entry from the shared plan (id from get_shortlist). Only when the user wants it — never silently delete entries the human saved themselves.

    View tool JSON
    {
      "name": "remove_from_shortlist",
      "kind": "act",
      "impl": "imperative",
      "description": "Remove one entry from the shared plan (id from get_shortlist). Only when the user wants it — never silently delete entries the human saved themselves.",
      "inputSchema": {
        "type": "object",
        "properties": {
          "id": {
            "type": "integer",
            "description": "Entry id from get_shortlist"
          }
        },
        "required": [
          "id"
        ]
      },
      "page": "/"
    }
    get_shortlistAnswer

    Read the shared plan including the user's handwritten NOTES and who created each entry (human/agent). Call before modifying or summarizing the plan. Read-only.

    View tool JSON
    {
      "name": "get_shortlist",
      "kind": "answer",
      "impl": "imperative",
      "description": "Read the shared plan including the user's handwritten NOTES and who created each entry (human/agent). Call before modifying or summarizing the plan. Read-only.",
      "inputSchema": {
        "type": "object",
        "properties": {}
      },
      "page": "/"
    }
    set_noteAction

    Write or update a note on a plan entry (e.g. 'book an appointment', 'open till 6pm weekdays'). The user sees the note in the plan immediately.

    View tool JSON
    {
      "name": "set_note",
      "kind": "act",
      "impl": "imperative",
      "description": "Write or update a note on a plan entry (e.g. 'book an appointment', 'open till 6pm weekdays'). The user sees the note in the plan immediately.",
      "inputSchema": {
        "type": "object",
        "properties": {
          "id": {
            "type": "integer",
            "description": "Entry id from get_shortlist"
          },
          "note": {
            "type": "string",
            "description": "Note text (replaces the previous note)"
          }
        },
        "required": [
          "id",
          "note"
        ]
      },
      "page": "/"
    }
    propose_appointmentAction

    Propose 1-3 concrete appointment slots for one provider on the plan (e.g. after the user said when they are free). The proposal renders on the page; the HUMAN confirms a slot with one click — that opens a pre-written email to the provider and saves a tentative calendar (.ics) file. Nothing is ever sent automatically. Check get_shortlist afterwards for the confirmed slot.

    View tool JSON
    {
      "name": "propose_appointment",
      "kind": "act",
      "impl": "imperative",
      "description": "Propose 1-3 concrete appointment slots for one provider on the plan (e.g. after the user said when they are free). The proposal renders on the page; the HUMAN confirms a slot with one click — that opens a pre-written email to the provider and saves a tentative calendar (.ics) file. Nothing is ever sent automatically. Check get_shortlist afterwards for the confirmed slot.",
      "inputSchema": {
        "type": "object",
        "properties": {
          "id": {
            "type": "integer",
            "description": "Plan entry id from get_shortlist"
          },
          "slots": {
            "type": "array",
            "minItems": 1,
            "maxItems": 3,
            "items": {
              "type": "string",
              "description": "ISO 8601 date-time, e.g. 2026-09-02T14:00"
            },
            "description": "1-3 proposed slots in the user's local time"
          },
          "service": {
            "type": "string",
            "description": "Optional service, e.g. \"men's haircut\", \"first checkup\""
          }
        },
        "required": [
          "id",
          "slots"
        ]
      },
      "page": "/"
    }
    draft_outreachAction

    Draft a ready-to-send first-contact message (email/phone text) to one provider on the plan — asking about availability and English communication, and including the user's note on that entry as a question. Returns the draft plus the provider's email/phone if known; refine it before the user sends it. Read-only, sends nothing itself.

    View tool JSON
    {
      "name": "draft_outreach",
      "kind": "act",
      "impl": "imperative",
      "description": "Draft a ready-to-send first-contact message (email/phone text) to one provider on the plan — asking about availability and English communication, and including the user's note on that entry as a question. Returns the draft plus the provider's email/phone if known; refine it before the user sends it. Read-only, sends nothing itself.",
      "inputSchema": {
        "type": "object",
        "properties": {
          "id": {
            "type": "integer",
            "description": "Plan entry id from get_shortlist"
          },
          "language": {
            "type": "string",
            "enum": [
              "en",
              "de"
            ],
            "description": "Draft language (default en)"
          }
        },
        "required": [
          "id"
        ]
      },
      "page": "/"
    }
    find_bookableAnswer

    Unified booking lookup: online-bookable service providers (hairdresser, massage, physio, vet, driving school …) around the configured PLZ, normalized across booking platforms with one deep link each — booking completes on the provider's platform. Renders results for the user. Optionally restrict to one category slug. Requires set_home_plz. Read-only.

    View tool JSON
    {
      "name": "find_bookable",
      "kind": "answer",
      "impl": "imperative",
      "description": "Unified booking lookup: online-bookable service providers (hairdresser, massage, physio, vet, driving school …) around the configured PLZ, normalized across booking platforms with one deep link each — booking completes on the provider's platform. Renders results for the user. Optionally restrict to one category slug. Requires set_home_plz. Read-only.",
      "inputSchema": {
        "type": "object",
        "properties": {
          "category": {
            "type": "string",
            "description": "Optional category slug (e.g. friseur, massage)"
          },
          "limit": {
            "type": "integer",
            "minimum": 1,
            "maximum": 10,
            "description": "Max per category (default 5)"
          }
        }
      },
      "page": "/"
    }
    find_jobsAnswer

    Search real job openings around the configured PLZ via the OFFICIAL German Federal Employment Agency (Bundesagentur fuer Arbeit) API. Returns title, employer, city, salary range when stated, home-office flag and an official application link per job, plus the total count. Use 'what' for a free-text role query (e.g. 'python developer', 'nurse'). Requires set_home_plz. Read-only.

    View tool JSON
    {
      "name": "find_jobs",
      "kind": "answer",
      "impl": "imperative",
      "description": "Search real job openings around the configured PLZ via the OFFICIAL German Federal Employment Agency (Bundesagentur fuer Arbeit) API. Returns title, employer, city, salary range when stated, home-office flag and an official application link per job, plus the total count. Use 'what' for a free-text role query (e.g. 'python developer', 'nurse'). Requires set_home_plz. Read-only.",
      "inputSchema": {
        "type": "object",
        "properties": {
          "what": {
            "type": "string",
            "description": "Free-text job/role query; empty returns all jobs nearby"
          },
          "limit": {
            "type": "integer",
            "minimum": 1,
            "maximum": 20,
            "description": "Max results (default 5)"
          },
          "radius": {
            "type": "integer",
            "minimum": 5,
            "maximum": 200,
            "description": "Search radius in km (default 25)"
          }
        }
      },
      "page": "/"
    }
    get_paperwork_checklistAnswer

    Return the German bureaucracy starter pack: the ordered official steps after moving (Anmeldung, tax ID, health insurance, bank account, Kindergeld child benefit, Buergergeld, broadcasting fee) with official government links only. Use when the user asks about paperwork, registration, benefits or 'what do I need to do after moving'. Read-only, static data.

    View tool JSON
    {
      "name": "get_paperwork_checklist",
      "kind": "answer",
      "impl": "imperative",
      "description": "Return the German bureaucracy starter pack: the ordered official steps after moving (Anmeldung, tax ID, health insurance, bank account, Kindergeld child benefit, Buergergeld, broadcasting fee) with official government links only. Use when the user asks about paperwork, registration, benefits or 'what do I need to do after moving'. Read-only, static data.",
      "inputSchema": {
        "type": "object",
        "properties": {}
      },
      "page": "/"
    }
    set_home_location_formAction

    Set the new home postal code (German PLZ) and load nearby everyday essentials.

    View tool JSON
    {
      "name": "set_home_location_form",
      "kind": "act",
      "impl": "declarative",
      "description": "Set the new home postal code (German PLZ) and load nearby everyday essentials.",
      "inputSchema": {
        "type": "object",
        "properties": {
          "plz": {
            "type": "string",
            "description": "Your new postal code, e.g. 10115"
          }
        }
      },
      "page": "/"
    }