Skip to main content
Glama
752,355 tools. Updated 2026-11-06 17:42

"A server for finding real estate in France" matching MCP tools:

  • PAID (200 credits PER PROPERTY, max 25 properties/call) — bulk physical climate-risk disclosure input for a real-estate/asset portfolio (SEC climate disclosure rule / EU CSRD physical-risk reporting). Runs assess_property_hazard for each [lon, lat] property and returns honest aggregate counts (properties with FEMA disaster history, properties with active NOAA alerts) alongside each property's own full result — no invented portfolio-level risk score. Use estimate_cost(tool_name= "assess_portfolio_climate_disclosure", units=<property count>) first to quote. Requires Authorization: Bearer <api_key>. Returns JSON: {ok, evaluated, scored_count, failed_count, failed, properties_with_disaster_ history_10y, properties_with_active_weather_alerts, properties, note}.
    ConnectorNo auth
  • Look up a NUCC provider taxonomy code (the specialty codes used on HIPAA transactions + NPI registrations) or search by keyword. Returns classification + type + optional specialization. Source: NUCC Health Care Provider Taxonomy Code Set (public; CMS-accepted). WHEN TO USE: Resolving a NUCC provider taxonomy code to its specialty description. WHEN NOT: For finding a provider by specialty in a region (not yet implemented).
    ConnectorNo auth
  • Returns the plain-language meaning and step-by-step fix for one Malinois finding. Use it while helping the user fix an issue reported by scan_app, or when they ask what a finding means. Pass the rule_id exactly as scan_app returned it. Read-only, no network, instant.
    ConnectorNo auth
  • SPENDS REAL MONEY. Places a real order for sending domains and pre-warmed mailboxes: domains are registered at their listed price (about $13.99/year for a .com — search_dfy_domains shows the exact price per domain) and each mailbox costs about $3 setup plus $6/month. The order is accepted immediately and provisioned in the background; poll get_dfy_order for progress. Purchased domains redirect visitors to forwardingDomain. Use search_dfy_domains first to confirm availability and price. Every domain in domains needs at least one mailbox in mailboxes whose domainName is that domain, or the order is refused before anything is bought; mailboxes can also go on a domain from an earlier order.
    ConnectorNo auth
  • Search US court opinions from CourtListener — 8.3 million of them, with no API key and no rate limit. Covers the UNITED STATES SUPREME COURT (SCOTUS), the federal circuit courts of appeals, the federal district courts, and the state courts (71% of the corpus is state case law). THE tool for what a US court HELD, decided or ruled in a NAMED CASE — "What did the Supreme Court hold in Air France v. Saks?", "Miranda v. Arizona", "the Ninth Circuit ruling in ..." — including the treaty and statutory questions such cases turn on (Warsaw Convention, ERISA, the Fourth Amendment). Matches the case name, the judge, and (where CourtListener recorded one) a nature-of-suit/disposition category, so it is strongest on party names, judges, and case categories ("workers compensation", "habeas", "immigration") and weaker on a legal DOCTRINE that would not appear in those fields (e.g. "qualified immunity") — use find_case when you know the party, and expect this to sometimes miss on doctrine-only phrasing. Filter by jurisdiction (state vs federal, inferred from the citation reporter) and by date_filed (the real ruling date). A specific court code (e.g. "scotus", "ca9") or a filing after the covered window falls back to a live, token-less CourtListener search automatically. Every result carries snapshot_date and opinion_ids to read with get_opinion.
    ConnectorNo auth
  • Find individual Polish real-estate transactions from the national RCN registry (8M+ notarial deeds, not asking prices) by place, property type, price, area, date or street. Returns address, date, price, area, price/m² and property type. Resolve the place first: list_locations(search=...), then pass its TERYT code as teryt= (exact match). Use location= only for a name that result flags as an RCN district (rcn_district) - other names silently return zero rows. Neighborhoods (osiedla) are not TERYT districts: use search_by_area. Data note: ~1.7% of records have no transaction_date. Permalink: https://cenogram.pl/ceny-transakcyjne?src=mcphttp#v=1&lat=<A>&lng=<B>&z=16&tx=<id> (use row id and coordinates A,B = lat,lng; omit &tx=<id> for area only). Inline [...] notes flag computed values (summed or converted parcel area, inferred property type) and approximated streets; all else is as recorded in the deed.
    ConnectorOAuth

Matching MCP Servers

  • A
    license
    A
    quality
    C
    maintenance
    Enables AI-powered real estate analysis with built-in EU AI Act compliance, providing a production-ready MCP server for property insights and governance.
    1
    MIT
  • A
    license
    Not graded
    quality
    D
    maintenance
    Analyzes real estate locations using Kakao Local API, providing insights on education, transportation, convenience, nature, and future value.
    MIT

Matching MCP Connectors

  • Pull property listings, prices, and details from real-estate sites as structured JSON.

  • Book a free consultation or home valuation with SimpliCity Real Estate in Lincoln, Nebraska.

  • Quote an LTL shipment — returns Warp's all-inclusive rate FAST (~1-2s) so the user sees a price immediately. The inline quote card shows the Warp rate plus a 'finding other carrier rates…' loading indicator. IMMEDIATELY follow up by calling ltl_market_options with the same parameters to fill in the multi-carrier comparison (~15s). Provide dims + commodity for an exact firm quote; if you don't have dims, quote anyway — it assumes a standard 48x40x48 pallet (FAK, no freight class) for an instant price. Don't block on asking for pallet dimensions; quote first, then pass real dims for an exact rate. When a palletized load could also move by box truck or van, quote LTL alongside those and show the cheapest valid mode. Do not editorialize the results. Do not declare a winner or recommend a specific carrier. Present Warp's quote first, then list market options as context. Let the user decide.
    ConnectorNo auth
  • Liefert die von Kopp Real Estate veröffentlichten Marktdaten für einen Münchner Stadtbezirk oder für München gesamt: Angebotspreis je Quadratmeter für Eigentumswohnungen und Häuser, Angebotsmiete je Quadratmeter, Bruttoanfangsrendite und Vervielfältiger, jeweils mit Stichtag und Quelle. Es sind Angebotswerte aus Inseraten, keine beurkundeten Kaufpreise und keine Bewertung einer einzelnen Immobilie. Stadtteile wie Haidhausen, Solln oder Pasing werden ihrem Stadtbezirk zugeordnet. Liegt ein Ort nicht in den Daten, wird nichts geschätzt. Für eine persönliche Einschätzung einer konkreten Immobilie das Tool kopp_bewertung_anfragen verwenden.
    ConnectorNo auth
  • One TikTok account: its follower count, its lifetime likes and how many videos it has posted. Use when: sizing a creator or a brand on TikTok, checking a handle is real, reading a bio before outreach. Not for: the account's videos, use tiktok_get_videos. Where its audience is, use tiktok_get_audience. Finding accounts by topic, use tiktok_search_videos and read the authors. Returns: Record. The account's handle, name, bio, verified, followers, following, posts_count, likes, views, website (the link in bio) and links, with other profile fields where TikTok fills them. null or empty = the platform does not publish it. Cost: 1 credit. Cached 24 hours. Example: {"handle": "@gymshark"}
    ConnectorAPI key
  • Monthly Amazon search volume for up to 1,000 keywords you already have, in the order given. Use when: "how many people search Amazon for X", comparing Amazon demand with Google demand, sizing a product idea on Amazon. Not for: Google volume, use seo_get_keyword_metrics. Finding keywords, use amazon_search_keywords. Returns: List. rows[]: keyword, volume (monthly Amazon searches; null = no data). Cost: 5 + 5 per 100 keywords. 10 keywords = 6 credits. Cached 7 days. Example: {"keywords": ["standing desk", "desk converter"]}
    ConnectorAPI key
  • The calendar as data for planning: posts in time order with their targets, approval state and allowed_actions. It draws nothing; show_posts returns the same data drawn as an approval list for the person. Suited to finding free times, avoiding doubled posts, or finding a post to change. status: upcoming (needs approval or approved, still to go out; the default of show_posts), needs_approval, changes_requested (a person sent it back with notes to fix), draft, rejected, scheduled (approved, still to publish), posted, failed (a target failed or needs action), cancelled, or all (list_posts' default: everything not cancelled). from and to (ISO 8601 with an offset, e.g. 2026-10-06T09:00:00-07:00 for 9am in Los Angeles. A time without an offset is read as UTC. The workspace's time zone is in get_workspace.) filter on the post time; each target's own time is in targets[].local_time. A post still waiting for approval after its time has approval.overdue true (due_soon true when its time is under 30 minutes away): it will not go out until approved. Such posts carry suggested_times (the next free posting time, and the brand's best upcoming hours from its own numbers or common good hours without them, each with label and reason): the person picks one when approving in show_posts or the app. Paged: 20 by default, 100 at most; pass next_cursor for more.
    ConnectorOAuth
  • Sends a REAL test delivery (a sample event, in the exact shape real deliveries use) to the webhook's target URL — the external endpoint WILL receive an actual request. Confirm with the user first: call WITHOUT confirm for a read-only PREVIEW, then again with confirm:true. The webhook is verified server-side before firing (unknown ID → 'Webhook not found.'); verify the delivery outcome with get_webhook_deliveries (the attempt's statusCode).
    Connector
    Destructive
    OAuth
  • Get the result of a race, or of every race at a meeting (Pro tier). Takes the same arguments as get_race_card(), so a race you pulled form for can be looked up here unchanged. Omit `race` to get the whole card in one call instead of looping race numbers. Each runner carries `outcome` ('placed', 'did_not_finish', 'scratched' or 'pending') plus `position` and `margin` when they apply — branch on `outcome`, since `position` is omitted when it does not. Dead heats share a position. Each race carries `resultStatus`: 'final', 'interim', 'pending' or 'abandoned'. On Pro, results are scraped by a pipeline run every 2-3 hours, not streamed, so a race that has just run reads 'pending' until the next run picks it up. That is not an error — do not retry in a loop. On Premium/Enterprise the same call fills in results from the real-time feed before that run, and each runner also carries live `prices` (see get_prices() for odds on a race that has not run). Coverage matches get_race_card(): every market we carry form for. Where no racing body's results are scraped (US, Canada, Japan, France, ...) the result comes from bookmaker results feeds and appears about two hours after the race, with finishing positions but no margins. Args: date: Race date in YYYY-MM-DD format. Range: 30 days ago to 7 days ahead. track: Track/venue name (e.g. 'flemington', 'randwick'). Case-insensitive. race: Race number (1-20). Omit for every race at the meeting. race_code: Race type — 'gallops' (default), 'harness', or 'greyhounds'. country: Country code (e.g. 'au' default, 'nz', 'gb', 'us', 'jp'). timezone: IANA timezone for date interpretation (e.g. 'Europe/London'). Defaults to Australia/Sydney — set this for overseas racing so the date matches the local race day.
    ConnectorNo auth
  • List security/safety findings for your workspace, most recent first. Optionally filter by status, target model, minimum severity, or a specific run. Returns a compact summary; call get_finding for the repro detail of any one finding. On a plan that withholds a finding's proof, category reads '[redacted]' and get_finding returns the same — the finding and its severity are real, the evidence is withheld. Paginated: 200 findings per page (max 200). The result carries total_matched and, when there is more, next_cursor: pass it back as 'cursor' with the same filters (it is bound to them) to read the next page, until it is absent.
    ConnectorOAuth
  • Search Form D filings: private placements and private funds (exempt offerings under Regulation D, Section 4(a)(5) and the Investment Company Act 3(c) exclusions), since 2009. Each result is one filing: issuer (CIK, name, city, state, entity type, year of incorporation), industry group and fund type, revenue or net-asset-value range, exemptions claimed (code and meaning), securities offered, date of first sale, total offering amount (null with offering_amount_indefinite=true when the filer wrote "Indefinite"), total amount sold so far, remaining, minimum investment, number of investors and non-accredited investors, sales commissions, finders' fees, proceeds paid to executives/directors/promoters, and counts of related persons and sales recipients. totals sums the WHOLE match, not just the page, and totals.by_category breaks it down by industry group and fund type. Categories are SEC's own (Form D Item 4), as the filer chose them; filter with exactly these (case does not matter, several comma-separated). industry: Banking & financial: Commercial Banking, Insurance, Investing, Investment Banking, Pooled Investment Fund, Other Banking and Financial Services Real estate: Commercial, Construction, REITS and Finance, Residential, Other Real Estate Technology: Computers, Telecommunications, Other Technology Health care: Biotechnology, Health Insurance, Hospitals and Physicians, Pharmaceuticals, Other Health Care Energy: Coal Mining, Electric Utilities, Energy Conservation, Environmental Services, Oil and Gas, Other Energy Travel: Airlines and Airports, Lodging and Conventions, Tourism and Travel Services, Other Travel Single: Agriculture, Business Services, Manufacturing, Retailing, Restaurants, Other fund_type (given only when industry is Pooled Investment Fund): Hedge Fund, Private Equity Fund, Venture Capital Fund, Other Investment Fund. Issuer size (Form D Item 5), also SEC's own values: revenue_range (operating companies, and VC/PE funds): No Revenues, $1 - $1,000,000, $1,000,001 - $5,000,000, $5,000,001 - $25,000,000, $25,000,001 - $100,000,000, Over $100,000,000, Decline to Disclose, Not Applicable nav_range (hedge funds and other investment funds): No Aggregate Net Asset Value, $1 - $5,000,000, $5,000,001 - $25,000,000, $25,000,001 - $50,000,000, $50,000,001 - $100,000,000, Over $100,000,000, Decline to Disclose, Not Applicable About 82% of filers choose Decline to Disclose for revenue (nearly all funds for NAV), so a size filter finds only those that disclosed; for "smaller raises" filter on amounts instead (max_sold, max_offering) and say which you used. Examples from real filings: Founders Fund Growth IV, LP -> Pooled Investment Fund / Venture Capital Fund Blackstone Private Equity Strategies Fund L.P. -> Pooled Investment Fund / Private Equity Fund Renaissance Institutional Diversified Global Equities Onshore Fund -> Pooled Investment Fund / Hedge Fund BlackRock Private Equity Co-Investments 2025 (Lux) SCSp -> Pooled Investment Fund / Other Investment Fund Alexander Series Trust (a cash fund) -> Pooled Investment Fund / Other Investment Fund New York Life Insurance & Annuity Corp -> Insurance Blackstone Real Estate Income Trust -> REITS and Finance Blue Owl Real Estate Exchange VI DST (a real estate syndication) -> Other Real Estate Space Exploration Technologies (SpaceX), X.AI Holdings, Databricks -> Other Technology Koios Medical -> Biotechnology The filer picks the category, so similar vehicles can land in different ones (a single-deal SPV may be Pooled Investment Fund or Other; some real estate syndications tick "pooled investment fund interests" as the security while choosing a real estate group). The securities field (pooled_fund, equity, debt...) is a second, independent signal. How to read the numbers: - A Form D/A restates the whole form, and total_amount_sold is cumulative. amendments="latest" (default) returns each offering once, at its newest filing, so sums never double count; "new" returns only original notices filed in the date range (new raises); "all" every filing. - For a Pooled Investment Fund, above all an evergreen or cash fund with an Indefinite offering, amount sold is cumulative subscriptions since the offering began (money in and out), not capital raised: Alexander Series Trust reports $591 billion. Read by_category before adding categories together, and say which categories a total includes. - Dates filter the filing date, not the date of first sale. - Form D says where the issuer is (state) and where paid salespeople solicited (solicited_in), never where investors live. Use get_private_offering for one filing in full (people, placement agents, offering history). Args: q: Issuer name contains (e.g. "Databricks"). Also matches funds and SPVs named after a company ("Gaingels Databricks 2023 LLC"), which are investors in it, not the company. cik: Issuer CIK; matches primary issuer or co-issuer. For one company's own filings, find its CIK with search_companies and pass it here rather than q. industry: One or more SEC industry groups from the list above, comma-separated exclude_industry: Industry groups to leave out, comma-separated (e.g. "Pooled Investment Fund" for operating companies only) fund_type: One or more of Hedge Fund, Private Equity Fund, Venture Capital Fund, Other Investment Fund revenue_range: One or more SEC revenue ranges from the list above, comma-separated nav_range: One or more SEC net asset value ranges from the list above, comma-separated exemption: "506(b)", "506(c)", "506" (any Rule 506 incl. pre-2013), "504", "4(a)(5)", "3(c)(1)", "3(c)(7)"... security: equity, debt, option_warrant, security_to_be_acquired, pooled_fund, tenant_in_common, mineral_property, other state: Issuer's state/country code, e.g. "CA", "NY", "X0" (United Kingdom) solicited_in: Two-letter state where a paid placement agent solicited (offerings with no paid agent never match) recipient: Placement agent / broker-dealer name contains, or its FINRA CRD number (e.g. "7691" = Merrill Lynch) person: Related person's name contains (executive officer, director, promoter) from_date: Filing date from (YYYY-MM-DD) to_date: Filing date to (YYYY-MM-DD) min_sold: Minimum total amount sold, USD max_sold: Maximum total amount sold, USD min_offering: Minimum total offering amount (the planned raise), USD max_offering: Maximum total offering amount, USD (Indefinite offerings never match) amendments: "latest" (default), "new" or "all" — see above sort: "date" (newest first, default), "sold" or "offering" (largest first) limit: Results per page (1-100, default 20) offset: Pagination offset
    ConnectorNo auth
  • Create one or more findings in Mallory. A finding is a durable record that a specific problem exists on a specific asset belonging to the caller's own organization — not a chat message and not a note to yourself. It is visible in the Mallory UI to everyone in that organization, and nothing on this server deletes one: a finding filed by mistake can only be marked dismissed with updateFinding. WRITES IMMEDIATELY. There is no draft, no preview and no confirmation step — calling this tool IS the write. Only call it when the user has asked, in so many words, for findings to be filed in Mallory ("create a finding for that", "file these"). Finishing an investigation is not permission to file its results: report them and let the user decide. WHAT TO SEND - definition_slug must ALREADY EXIST in the catalog. Look one up with the queryApi tool, path "/v1/finding_definitions" (filter by category or severity to narrow). Never invent a slug, and never substitute a near-match for one that was rejected — that files the wrong kind of finding. - One finding per problem per asset. Five misconfigured buckets are five findings sharing a definition_slug with five different asset_identifier values, not one finding listing five buckets. Send the whole batch in ONE call (max 25): each is created independently, so one duplicate does not block the rest. - asset_type is a provider.service.object value (e.g. aws.s3.bucket, aws.iam.role, github.repo, azure.storage.account), or "generic" when nothing fits. Legacy underscore forms like "s3_bucket" are rejected. - summary / body / remediation are markdown, and are read by people who were not in your conversation: what is wrong, how you established it, and the actual fix. - evidence is one entry per thing you actually OBSERVED — the query and what it returned, the endpoint and its status, the file and the matching line. Three observations are three entries. Never write evidence for something you inferred rather than observed; lower confidence and say so in body instead. ENUM VALUES ARE CASE-SENSITIVE AND EACH FIELD HAS ITS OWN SET. severity is UPPERCASE (CRITICAL, HIGH, MEDIUM, LOW, INFO) and optional — omit it and the definition's own default applies, which is usually right; override only when this instance is genuinely worse or milder than the type normally is, and say why in body. confidence is lowercase (low, medium, high). Status is not settable here: a finding is created open, and status values are lowercase (see updateFinding). OUTCOMES come back per finding, in `created` and `failed`: - DUPLICATE — an open finding already covers that asset, and `existing_finding_uuid` names it. Say so and move on. Do NOT re-word the title and retry; to change the one that exists, call updateFinding with that uuid. - UNKNOWN_DEFINITION — the slug is not in the catalog. Look up a real one; do not guess a neighbouring slug. - INVALID — core rejected a field, most often asset_type. Fix that field, not the slug. - INVALID_ASSET_IDENTIFIER — asset_identifier names no asset (a placeholder such as "unknown", or a bare word such as a tool or data-source name, with asset_type "generic"). Nothing was written. Use the real affected asset from the source data (host:port, hostname, URL, account, repository); never invent one. - PLAN_LIMIT — findings are not included in this tenant's plan. The request was fine, nothing is broken and nothing was written: tell the user, pass on the upgrade link if the outcome carries one, and do not retry or reach for another tool to file it. `list_url` is null outside the Mallory chat app — there is no conversation for an MCP call to scope a list to. Read a created finding back with getFinding using the uuid in `created`, or browse the tenant's findings with listFindings.
    ConnectorAPI key
  • Update ONE existing Mallory finding in place — its status, severity, confidence, title, summary, body, remediation, qualifier or asset_details. Use it when new information changes an already-filed finding: the problem was fixed, it turned out not to apply, a vulnerability proved reachable, corroborating intel changes how bad it is. WRITES IMMEDIATELY to the caller's own organization's data, and the result is visible in the Mallory UI to everyone in that organization. There is no preview and no confirmation step — calling this tool IS the write. Only call it when the user has asked for the change. - uuid identifies the finding. Get it from listFindings or getFinding, or from a createFinding DUPLICATE outcome's `existing_finding_uuid`. Never construct or guess one. - ONE finding per call. To change status or severity across a SET of findings you can only describe ("dismiss all the unrotated-secret findings", "mark everything on foo/bar medium"), use bulkUpdateFindings — do NOT loop this tool over a selection. - The finding's identity — definition_slug, asset_type, asset_identifier — cannot be changed. A different problem, or the same problem on a different asset, is a new finding (createFinding). - body REPLACES the stored text rather than appending to it. To add to a finding, read the current text first with getFinding and send the combined text, or the prior detail is lost. There is no evidence field on update: new evidence goes into body as prose. - qualifier is part of core's open-finding dedupe key, so changing it can collide with another open finding on the same asset (CONFLICT). In user-facing status messages, use "fixed" and "mark as fixed" consistently. ENUM VALUES ARE CASE-SENSITIVE AND EACH FIELD HAS ITS OWN SET. severity is UPPERCASE (CRITICAL, HIGH, MEDIUM, LOW, INFO). status is lowercase with exactly three values: open, fixed, dismissed — "resolved", "closed" and "assigned" are not statuses, and neither are the resolution reasons (false_positive, accepted_risk, not_applicable, duplicate, fixed_externally, other), which belong to a separate field this tool does not set. Use "fixed" when the problem was remediated and "dismissed" when it is accepted or not applicable. Setting status back to "open" is allowed but unusual — the product has no reopen button — so confirm the user really means to reopen the finding. OUTCOMES: either ok:true with the updated finding, or ok:false with a code — NOT_FOUND (no such finding in this tenant: do not retry, re-read the uuid), CONFLICT (an open finding already occupies that identity), INVALID (a rejected field, or no fields to change), PLAN_LIMIT (findings are not included in this tenant's plan — the request was fine, nothing is broken, nothing was written: say so and do not retry).
    ConnectorAPI key
  • Find live jobs, homes/rentals, vehicles, or local services NEAR a place or in a city/country on Teppek — use this for natural requests like "jobs near me", "apartments in Berlin", "used cars under 10k in Madrid", "plumbers nearby". Worldwide, with fresh, location-aware listings refreshed daily. For MEANING-based or fuzzy natural-language intent (not exact keywords or filters), use semantic_search instead. Mechanics: search by vertical (career/real_estate/vehicle/service), role, text, price and a radius around a lat/lon point. The `role` is the perspective you search AS and returns the COUNTERPARTY listings: to find JOB POSTINGS use role="career_seeker" (NOT career_employer, which searches candidate CVs). Always send `role` with text_query: without it the call fails with an error, and vertical alone is not enough. country, category and near work without role; a call with none of text_query, country, category or near returns nothing. Real estate inventory is currently very limited, so an empty real_estate result does not mean the search failed. The response meta.total is the REAL match count (independent of limit); for a multi-word text_query it counts listings matching ANY of the words, so to count a whole occupation/category include its synonyms (e.g. "waiter waitress server"). Use the `country` field for country-scoped totals. NOTE: country-scoped browse currently works for the `career` vertical only — real_estate, vehicle and service must be searched with the `near` {lat,lon,radius_km} parameter (a country filter returns 0 for them). meta.ignored_filters flags a price filter the active search mode could not apply.
    ConnectorNo auth
  • FREE (no API key needed). Use when the user asks to find or list businesses by name, keyword, sector or city (e.g. 'dentists in Madrid', 'real estate agencies in Valencia'). Search businesses by name, keyword, country, city or sector. Results mix registry-backed companies and public business listings (local directories/maps), so not every result is registry-verified; use entity_lookup or verify_vat to verify one. Answers 'find me a dentist in Madrid' / 'list law firms in Barcelona'. `sector` is a closed vocabulary — see the enum; aliases such as `abogados` resolve to their canonical slug. Anonymous callers receive a trace-level preview (name + city); authenticated TRACE+ keys unlock full records.
    ConnectorNo auth
  • Run a deterministic, lender-grade quick check on a real estate deal. Use this whenever a user asks whether a specific property or deal works, pencils, is worth pursuing, what their maximum offer should be, or wants real numbers on a flip, a rental refinance, or a ground-up build. Inputs: deal_type (FF | BRRRR | NC), purchase_price, arv_or_value (ARV for FF, refinance value for BRRRR, sellout for NC), rehab_budget, zip_code; optional annual_debt_service, noi_annual, units, units_to_hold. Returns a PASS, MARGINAL or FAIL verdict, the key financial metrics for that deal type (MAO and margin for FF, TPC and DSCR for BRRRR, TPC plus margin or DSCR for NC), and a one-paragraph summary. Every figure is computed exactly from formulas, identical to the underwriting pipeline behind Refpro's full deal pack: no estimates, no rounding shortcuts. Do not use for general questions about method, pricing or output formats; call methodology_faq instead. Results are a preliminary underwriting screen, not an appraisal and not a lender commitment.
    ConnectorNo auth
  • FREE (no API key needed). Use when the user asks to find or list businesses by name, keyword, sector or city (e.g. 'dentists in Madrid', 'real estate agencies in Valencia'). Search businesses by name, keyword, country, city or sector. Results mix registry-backed companies and public business listings (local directories/maps), so not every result is registry-verified; use entity_lookup or verify_vat to verify one. Answers 'find me a dentist in Madrid' / 'list law firms in Barcelona'. `sector` is a closed vocabulary — see the enum; aliases such as `abogados` resolve to their canonical slug. Anonymous callers receive a trace-level preview (name + city); authenticated TRACE+ keys unlock full records.
    ConnectorNo auth