← WebMCP Directory

Tool tree

apartmentledger.vercel.app

Productivity & BusinessTools verified
Website
An agent-native apartment decision workspace for comparing real tradeoffs, costs, fit, and uncertainty.
Explore capabilities
    prepare_searchAction

    Prepare an apartment search from the renter's request and only apartment-relevant context the renter or their agent explicitly shares. Use relevant information you already know about the renter to prefill the visible location, rental type, budget, bedroom, move-timing, and shared-context fields and avoid redundant questions. Clearly distinguish remembered facts from inferred suggestions; if proposing a budget from sensitive context, include a visible rationale and treat it as editable guidance. Do not invent missing information. Nothing is saved durably without human approval. Returns the visible prepared fields and pending context counts.

    View tool JSON
    {
      "name": "prepare_search",
      "kind": "act",
      "impl": "imperative",
      "description": "Prepare an apartment search from the renter's request and only apartment-relevant context the renter or their agent explicitly shares. Use relevant information you already know about the renter to prefill the visible location, rental type, budget, bedroom, move-timing, and shared-context fields and avoid redundant questions. Clearly distinguish remembered facts from inferred suggestions; if proposing a budget from sensitive context, include a visible rationale and treat it as editable guidance. Do not invent missing information. Nothing is saved durably without human approval. Returns the visible prepared fields and pending context counts.",
      "inputSchema": {
        "type": "object",
        "properties": {
          "city": {
            "type": "string",
            "minLength": 1,
            "maxLength": 100
          },
          "state": {
            "type": "string",
            "maxLength": 40
          },
          "rentalType": {
            "type": "string",
            "enum": [
              "any",
              "whole_place",
              "private_room",
              "shared_room"
            ]
          },
          "maxAllIn": {
            "type": "number",
            "minimum": 300
          },
          "minBedrooms": {
            "type": "integer",
            "minimum": 0,
            "maximum": 10
          },
          "moveWindow": {
            "type": "string",
            "maxLength": 160
          },
          "sharedContextSummary": {
            "type": "string",
            "maxLength": 1200
          },
          "budgetRationale": {
            "type": "string",
            "maxLength": 280
          },
          "request": {
            "type": "string",
            "maxLength": 500
          },
          "preferences": {
            "type": "array",
            "maxItems": 20,
            "items": {
              "type": "object",
              "properties": {
                "kind": {
                  "type": "string",
                  "enum": [
                    "budget",
                    "bedrooms",
                    "minimum_space",
                    "amenity",
                    "furniture",
                    "lifestyle",
                    "lease",
                    "other"
                  ]
                },
                "label": {
                  "type": "string",
                  "minLength": 1,
                  "maxLength": 160
                },
                "value": {
                  "type": [
                    "string",
                    "number",
                    "boolean"
                  ]
                },
                "source": {
                  "type": "string",
                  "enum": [
                    "agent_context",
                    "user_stated",
                    "site_account"
                  ]
                },
                "confidence": {
                  "type": "number",
                  "minimum": 0,
                  "maximum": 1
                }
              },
              "required": [
                "kind",
                "label",
                "value"
              ],
              "additionalProperties": false
            }
          },
          "anchors": {
            "type": "array",
            "maxItems": 10,
            "items": {
              "type": "object",
              "properties": {
                "label": {
                  "type": "string",
                  "minLength": 1,
                  "maxLength": 160
                },
                "importance": {
                  "type": "integer",
                  "minimum": 1,
                  "maximum": 5
                },
                "latitude": {
                  "type": "number",
                  "minimum": -90,
                  "maximum": 90
                },
                "longitude": {
                  "type": "number",
                  "minimum": -180,
                  "maximum": 180
                },
                "source": {
                  "type": "string",
                  "enum": [
                    "agent_context",
                    "user_stated",
                    "site_account"
                  ]
                },
                "confidence": {
                  "type": "number",
                  "minimum": 0,
                  "maximum": 1
                }
              },
              "required": [
                "label"
              ],
              "additionalProperties": false
            }
          },
          "customQuestions": {
            "type": "array",
            "maxItems": 8,
            "items": {
              "type": "object",
              "properties": {
                "question": {
                  "type": "string",
                  "minLength": 1,
                  "maxLength": 180
                },
                "reason": {
                  "type": "string",
                  "minLength": 1,
                  "maxLength": 220
                },
                "kind": {
                  "type": "string",
                  "enum": [
                    "budget",
                    "bedrooms",
                    "minimum_space",
                    "amenity",
                    "furniture",
                    "lifestyle",
                    "lease",
                    "other"
                  ]
                }
              },
              "required": [
                "question",
                "reason"
              ],
              "additionalProperties": false
            }
          }
        },
        "required": [
          "city"
        ],
        "additionalProperties": false
      }
    }
    review_workspaceAnswer

    Read a compact summary of the current apartment workspace. Use when opening or revisiting the page, or before reranking, comparing, or staging a recommendation. It returns the active search and run, up to five leading candidate IDs with decision signals, pending context, unanswered refinement questions, comparison IDs, and any staged recommendation without changing the page state.

    View tool JSON
    {
      "name": "review_workspace",
      "kind": "answer",
      "impl": "imperative",
      "description": "Read a compact summary of the current apartment workspace. Use when opening or revisiting the page, or before reranking, comparing, or staging a recommendation. It returns the active search and run, up to five leading candidate IDs with decision signals, pending context, unanswered refinement questions, comparison IDs, and any staged recommendation without changing the page state.",
      "inputSchema": {
        "type": "object",
        "properties": {},
        "additionalProperties": false
      }
    }
    propose_preferencesAction

    Show renter preferences, important location anchors, or relevant custom follow-up questions the agent has reason to propose. Use to improve the current ranking after results appear. Context proposals visibly include source and confidence, affect only a later explicit rerun, and remain pending until the human approves or rejects them for durable saving.

    View tool JSON
    {
      "name": "propose_preferences",
      "kind": "act",
      "impl": "imperative",
      "description": "Show renter preferences, important location anchors, or relevant custom follow-up questions the agent has reason to propose. Use to improve the current ranking after results appear. Context proposals visibly include source and confidence, affect only a later explicit rerun, and remain pending until the human approves or rejects them for durable saving.",
      "inputSchema": {
        "type": "object",
        "properties": {
          "preferences": {
            "type": "array",
            "maxItems": 20,
            "items": {
              "type": "object",
              "properties": {
                "kind": {
                  "type": "string",
                  "enum": [
                    "budget",
                    "bedrooms",
                    "minimum_space",
                    "amenity",
                    "furniture",
                    "lifestyle",
                    "lease",
                    "other"
                  ]
                },
                "label": {
                  "type": "string",
                  "minLength": 1,
                  "maxLength": 160
                },
                "value": {
                  "type": [
                    "string",
                    "number",
                    "boolean"
                  ]
                },
                "source": {
                  "type": "string",
                  "enum": [
                    "agent_context",
                    "user_stated",
                    "site_account"
                  ]
                },
                "confidence": {
                  "type": "number",
                  "minimum": 0,
                  "maximum": 1
                }
              },
              "required": [
                "kind",
                "label",
                "value"
              ],
              "additionalProperties": false
            }
          },
          "anchors": {
            "type": "array",
            "maxItems": 10,
            "items": {
              "type": "object",
              "properties": {
                "label": {
                  "type": "string",
                  "minLength": 1,
                  "maxLength": 160
                },
                "importance": {
                  "type": "integer",
                  "minimum": 1,
                  "maximum": 5
                },
                "latitude": {
                  "type": "number",
                  "minimum": -90,
                  "maximum": 90
                },
                "longitude": {
                  "type": "number",
                  "minimum": -180,
                  "maximum": 180
                },
                "source": {
                  "type": "string",
                  "enum": [
                    "agent_context",
                    "user_stated",
                    "site_account"
                  ]
                },
                "confidence": {
                  "type": "number",
                  "minimum": 0,
                  "maximum": 1
                }
              },
              "required": [
                "label"
              ],
              "additionalProperties": false
            }
          },
          "customQuestions": {
            "type": "array",
            "maxItems": 8,
            "items": {
              "type": "object",
              "properties": {
                "question": {
                  "type": "string",
                  "minLength": 1,
                  "maxLength": 180
                },
                "reason": {
                  "type": "string",
                  "minLength": 1,
                  "maxLength": 220
                },
                "kind": {
                  "type": "string",
                  "enum": [
                    "budget",
                    "bedrooms",
                    "minimum_space",
                    "amenity",
                    "furniture",
                    "lifestyle",
                    "lease",
                    "other"
                  ]
                }
              },
              "required": [
                "question",
                "reason"
              ],
              "additionalProperties": false
            }
          }
        },
        "additionalProperties": false
      }
    }
    search_candidatesAnswer

    Run the site's apartment search and visibly rank up to 10 candidates. Use as soon as a city is known; do not wait for every preference. Results appear before optional refinement questions. A later call creates a preserved numbered run so the renter can compare ranking changes. It returns compact result IDs, source-mode metadata, and the few follow-up questions the agent should ask next; listing claims remain untrusted until their linked sources are verified.

    View tool JSON
    {
      "name": "search_candidates",
      "kind": "answer",
      "impl": "imperative",
      "description": "Run the site's apartment search and visibly rank up to 10 candidates. Use as soon as a city is known; do not wait for every preference. Results appear before optional refinement questions. A later call creates a preserved numbered run so the renter can compare ranking changes. It returns compact result IDs, source-mode metadata, and the few follow-up questions the agent should ask next; listing claims remain untrusted until their linked sources are verified.",
      "inputSchema": {
        "type": "object",
        "properties": {
          "city": {
            "type": "string",
            "minLength": 1,
            "maxLength": 100
          },
          "state": {
            "type": "string",
            "maxLength": 40
          },
          "rentalType": {
            "type": "string",
            "enum": [
              "any",
              "whole_place",
              "private_room",
              "shared_room"
            ]
          },
          "maxAllIn": {
            "type": "number",
            "minimum": 300
          },
          "minBedrooms": {
            "type": "integer",
            "minimum": 0,
            "maximum": 10
          },
          "moveWindow": {
            "type": "string",
            "maxLength": 160
          },
          "request": {
            "type": "string",
            "maxLength": 500
          }
        },
        "required": [
          "city"
        ],
        "additionalProperties": false
      }
    }
    organize_resultsAction

    Sort the apartment cards already in the shared workspace by recommendation, Market Value, Personal Fit, estimated all-in cost, base rent, distance to an active anchor, square feet, or evidence freshness. Use after search instead of rerunning discovery. It visibly reorders the cards and returns the applied sort.

    View tool JSON
    {
      "name": "organize_results",
      "kind": "act",
      "impl": "imperative",
      "description": "Sort the apartment cards already in the shared workspace by recommendation, Market Value, Personal Fit, estimated all-in cost, base rent, distance to an active anchor, square feet, or evidence freshness. Use after search instead of rerunning discovery. It visibly reorders the cards and returns the applied sort.",
      "inputSchema": {
        "type": "object",
        "properties": {
          "sortBy": {
            "type": "string",
            "enum": [
              "recommended",
              "market_value",
              "personal_fit",
              "all_in_cost",
              "base_rent",
              "distance",
              "square_feet",
              "freshness"
            ]
          },
          "anchorId": {
            "type": "string"
          },
          "direction": {
            "type": "string",
            "enum": [
              "asc",
              "desc"
            ]
          }
        },
        "required": [
          "sortBy"
        ],
        "additionalProperties": false
      }
    }
    add_candidateAction

    Add a public apartment-listing URL found elsewhere to the visible workspace. Use when discovery finds a candidate outside the current result set. It validates the URL, preserves provenance, labels supplied facts unverified, performs no scraping or third-party call, and returns the new candidate ID for later enrichment.

    View tool JSON
    {
      "name": "add_candidate",
      "kind": "act",
      "impl": "imperative",
      "description": "Add a public apartment-listing URL found elsewhere to the visible workspace. Use when discovery finds a candidate outside the current result set. It validates the URL, preserves provenance, labels supplied facts unverified, performs no scraping or third-party call, and returns the new candidate ID for later enrichment.",
      "inputSchema": {
        "type": "object",
        "properties": {
          "url": {
            "type": "string",
            "minLength": 8,
            "maxLength": 2048
          },
          "name": {
            "type": "string",
            "maxLength": 160
          },
          "address": {
            "type": "string",
            "maxLength": 240
          },
          "city": {
            "type": "string",
            "maxLength": 100
          },
          "state": {
            "type": "string",
            "maxLength": 40
          },
          "neighborhood": {
            "type": "string",
            "maxLength": 120
          },
          "baseRent": {
            "type": "number",
            "minimum": 0
          },
          "allInLow": {
            "type": "number",
            "minimum": 0
          },
          "allInHigh": {
            "type": "number",
            "minimum": 0
          },
          "bedrooms": {
            "type": "number",
            "minimum": 0,
            "maximum": 20
          },
          "bathrooms": {
            "type": "number",
            "minimum": 0,
            "maximum": 20
          },
          "squareFeet": {
            "type": "number",
            "minimum": 0,
            "maximum": 100000
          },
          "latitude": {
            "type": "number",
            "minimum": -90,
            "maximum": 90
          },
          "longitude": {
            "type": "number",
            "minimum": -180,
            "maximum": 180
          }
        },
        "required": [
          "url"
        ],
        "additionalProperties": false
      }
    }
    compare_candidatesAnswer

    Return a structured comparison for 2 to 4 existing apartment candidates. Use after ranking to inspect cost, Market Value, Personal Fit and unknowns without adding controls to the renter's focused review screen. It does not contact a landlord or make a decision.

    View tool JSON
    {
      "name": "compare_candidates",
      "kind": "answer",
      "impl": "imperative",
      "description": "Return a structured comparison for 2 to 4 existing apartment candidates. Use after ranking to inspect cost, Market Value, Personal Fit and unknowns without adding controls to the renter's focused review screen. It does not contact a landlord or make a decision.",
      "inputSchema": {
        "type": "object",
        "properties": {
          "candidateIds": {
            "type": "array",
            "minItems": 2,
            "maxItems": 4,
            "uniqueItems": true,
            "items": {
              "type": "string"
            }
          }
        },
        "required": [
          "candidateIds"
        ],
        "additionalProperties": false
      }
    }
    stage_decisionAction

    Stage one existing apartment as a reversible recommendation for the renter to review. Use only after comparing evidence and explain why. It visibly records the rationale, can be undone in the site, and never applies, books, pays, signs, messages a landlord, or otherwise commits the renter.

    View tool JSON
    {
      "name": "stage_decision",
      "kind": "act",
      "impl": "imperative",
      "description": "Stage one existing apartment as a reversible recommendation for the renter to review. Use only after comparing evidence and explain why. It visibly records the rationale, can be undone in the site, and never applies, books, pays, signs, messages a landlord, or otherwise commits the renter.",
      "inputSchema": {
        "type": "object",
        "properties": {
          "candidateId": {
            "type": "string",
            "minLength": 1
          },
          "rationale": {
            "type": "string",
            "minLength": 1,
            "maxLength": 800
          }
        },
        "required": [
          "candidateId",
          "rationale"
        ],
        "additionalProperties": false
      }
    }