{"ok":true,"site":{"host":"apartmentledger.vercel.app","url":"https://apartmentledger.vercel.app/","type":"live","desc":"An agent-native apartment decision workspace for comparing real tradeoffs, costs, fit, and uncertainty.","tools":[{"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.","title":"Prepare apartment search","annotations":{"readOnlyHint":false,"untrustedContentHint":true},"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},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute"},{"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.","title":"Review apartment workspace","annotations":{"readOnlyHint":true,"untrustedContentHint":true},"inputSchema":{"type":"object","properties":{},"additionalProperties":false},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute"},{"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.","title":"Propose renter context","annotations":{"readOnlyHint":false,"untrustedContentHint":true},"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},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute"},{"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.","title":"Search apartment candidates","annotations":{"readOnlyHint":false,"untrustedContentHint":true},"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},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute"},{"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.","title":"Organize apartment results","annotations":{"readOnlyHint":false,"untrustedContentHint":true},"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},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute"},{"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.","title":"Add apartment candidate","annotations":{"readOnlyHint":false,"untrustedContentHint":true},"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},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute"},{"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.","title":"Compare apartment candidates","annotations":{"readOnlyHint":false,"untrustedContentHint":true},"inputSchema":{"type":"object","properties":{"candidateIds":{"type":"array","minItems":2,"maxItems":4,"uniqueItems":true,"items":{"type":"string"}}},"required":["candidateIds"],"additionalProperties":false},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute"},{"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.","title":"Stage apartment recommendation","annotations":{"readOnlyHint":false,"untrustedContentHint":true},"inputSchema":{"type":"object","properties":{"candidateId":{"type":"string","minLength":1},"rationale":{"type":"string","minLength":1,"maxLength":800}},"required":["candidateId","rationale"],"additionalProperties":false},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute"}],"favicon":"/favicons/apartmentledger.vercel.app.svg","apiSurface":"spec","category":"Productivity & Business","toolCount":8}}