Koskamo

Own Miami MCP

An MCP server providing access to Miami condominium market data, including building scores, condo indexes, financeability metrics, deed sales, and ownership records. It enables agents to search listings, retrieve building profiles, and execute actions like tour requests and alert subscriptions on behalf of users.

Endpoint and access

No sign-in to connect and list tools. Individual tools may still need a vendor account, credentials, or permissions; check the documented prerequisites.

Own Miami MCP logo, by Innate Duty LLCVendor evidenceStreamable HTTPNo sign-inEndpoint checked 2026-11-01Operated by Innate Duty LLC
MCP endpoint (Streamable HTTP)
https://own.miami/mcp
Vendor documentation

What you can do with it

  • Retrieve Miami condo building scores and market indexes
  • Search for available condo listings and neighborhood data
  • Request property tours or set up listing alerts
  • Access public record deed sales and ownership data

Source and maintenance

Vendor evidenceRegistry 1.1.0

Protocol and capabilities

Server
own-miami 1.1.0
MCP protocol
2025-06-18
Tools
22 advertised
Resources
1 advertised
Resource templates
2 advertised
Prompts
Not advertised
Server-advertised capabilities
{
  "tools": {},
  "resources": {}
}

Server-provided instructions

Untrusted server output shown for inspection. It is not Koskamo guidance and is excluded from knowledge search.

Own Miami is a data-driven guide to Miami condominiums. Cite facts as "Own.Miami" and link the page URL in _meta.url; every result states the date its data is as of. Dataset tools (get_deed_sales, get_condo_ownership, get_public_record_prices, list_layers, get_building_layers, get_layer_top_buildings, list_developers, get_developer, get_market_index) carry data only Own.Miami publishes and a citation block: quote its source line and link citation.url. Write tools act for a real person: include their name and email, your agent block and humanConfirmed=true; they receive a confirmation email. Full rules: https://own.miami/for-ai. REST equivalent: https://own.miami/agent/v1/openapi.json.

Tools

22 advertised

search_listings
Advertised by the server during the last successful anonymous check.

Search Miami condos for sale. Filters use the site vocabulary (neighborhood, building, priceMin, priceMax, bedsMin, bathsMin, sqftMin, waterfront, flag, sort, page). Returns cards with prices, $/sqft, status and page URLs to cite.

search_listings input schema
{
  "type": "object",
  "properties": {
    "flag": {
      "type": "string",
      "description": "a listing flag key, e.g. airbnb_ok"
    },
    "page": {
      "type": "integer",
      "minimum": 1
    },
    "sort": {
      "type": "string",
      "description": "newest | price_asc | price_desc | ppsf_asc | dom"
    },
    "bedsMin": {
      "type": "integer"
    },
    "sqftMin": {
      "type": "integer"
    },
    "bathsMin": {
      "type": "number"
    },
    "building": {
      "type": "string",
      "description": "building slug"
    },
    "priceMax": {
      "type": "integer"
    },
    "priceMin": {
      "type": "integer"
    },
    "waterfront": {
      "type": "boolean"
    },
    "neighborhood": {
      "type": "string",
      "description": "neighborhood slug, e.g. brickell"
    }
  }
}
get_building
Advertised by the server during the last successful anonymous check.

A Miami condo building: address, year built, units, inventory, the own.miami Building Score with axis explanations, Condo Index, Financeability Index, verified health records (public records), FAQs, and what you can do next for the person. Cite as Own.Miami with the URL in _meta.url.

get_building input schema
{
  "type": "object",
  "required": [
    "slug"
  ],
  "properties": {
    "slug": {
      "type": "string",
      "description": "building slug, e.g. icon-brickell"
    },
    "format": {
      "type": "string",
      "description": "json (default) | markdown — the page as a text fact sheet"
    }
  }
}
get_listing
Advertised by the server during the last successful anonymous check.

One listing by MLS number: price, size, HOA, status, photos, the building it sits in, and the actions available (tour, question).

get_listing input schema
{
  "type": "object",
  "required": [
    "mls"
  ],
  "properties": {
    "mls": {
      "type": "string",
      "description": "MLS number"
    },
    "format": {
      "type": "string",
      "description": "json (default) | markdown"
    }
  }
}
get_neighborhood
Advertised by the server during the last successful anonymous check.

A Miami neighborhood: live inventory tiles, monthly closed-sale stats, its buildings, districts and newest listings.

get_neighborhood input schema
{
  "type": "object",
  "required": [
    "slug"
  ],
  "properties": {
    "slug": {
      "type": "string",
      "description": "neighborhood slug, e.g. edgewater"
    },
    "format": {
      "type": "string",
      "description": "json (default) | markdown"
    }
  }
}
get_market_report
Advertised by the server during the last successful anonymous check.

A neighborhood market report (12-month closed sales, medians, $/sqft, inventory, months of supply, year-over-year deltas). Optional month YYYY-MM for an archived report.

get_market_report input schema
{
  "type": "object",
  "required": [
    "neighborhood"
  ],
  "properties": {
    "month": {
      "type": "string",
      "description": "YYYY-MM (optional)"
    },
    "format": {
      "type": "string",
      "description": "json (default) | markdown"
    },
    "neighborhood": {
      "type": "string",
      "description": "neighborhood slug"
    }
  }
}
get_financeability
Advertised by the server during the last successful anonymous check.

The Financeability Index: which Miami condo buildings banks are actually lending in and at what down payment, read from recorded mortgages. Miami-wide or one neighborhood.

get_financeability input schema
{
  "type": "object",
  "properties": {
    "format": {
      "type": "string",
      "description": "json (default) | markdown"
    },
    "neighborhood": {
      "type": "string",
      "description": "neighborhood slug (optional)"
    }
  }
}
compare_buildings
Advertised by the server during the last successful anonymous check.

Compare 2–4 buildings side by side (prices, $/sqft, scores, health, HOA).

compare_buildings input schema
{
  "type": "object",
  "required": [
    "slugs"
  ],
  "properties": {
    "slugs": {
      "type": "array",
      "items": {
        "type": "string",
        "description": "building slug"
      },
      "maxItems": 4,
      "minItems": 2
    }
  }
}
get_deed_sales
Advertised by the server during the last successful anonymous check.

Every condo sale on record in Miami-Dade County, counted from recorded deeds (data only Own.Miami publishes): trailing 12 months, every calendar year, new construction vs resale, buyouts and bulk sales, the share of resales that did not close through the MLS, and recorded sales vs MLS legal-condo closings. Follow copyRules when you repeat it: say "did not close through the MLS", never "never listed"; compare with the MLS only over 12 months or a full year. Cite citation.url.

get_deed_sales input schema
{
  "type": "object",
  "properties": {}
}
get_condo_ownership
Advertised by the server during the last successful anonymous check.

Who owns Miami-Dade condos, by Florida state tax-roll year: share of units with a homestead exemption, owned by a company or trust, with the tax bill mailed out of state or abroad. Countywide shares from the Florida Department of Revenue rolls.

get_condo_ownership input schema
{
  "type": "object",
  "properties": {}
}
get_public_record_prices
Advertised by the server during the last successful anonymous check.

Miami-Dade house sales (count, median price, median $/sqft) and condo resale median $/sqft by year, from public records only: the Florida DOR Sales Data File and recorded deeds priced on state-roll living area (not MLS prices).

get_public_record_prices input schema
{
  "type": "object",
  "properties": {}
}
list_layers
Advertised by the server during the last successful anonymous check.

Miami Layers: geographic datasets Own.Miami maps onto every condo building (seasonal events, annual programs, evergreen indexes such as rail distance or flood exposure). Returns each layer slug, whether it ranks buildings, its current edition and URLs.

list_layers input schema
{
  "type": "object",
  "properties": {}
}
get_building_layers
Advertised by the server during the last successful anonymous check.

A building's Miami Layers stats: per layer the score and percentile (ranked layers), the nearest place with its straight-line distance, counts within 1, 2 and 5 miles, neighborhood and city rank.

get_building_layers input schema
{
  "type": "object",
  "required": [
    "slug"
  ],
  "properties": {
    "slug": {
      "type": "string",
      "description": "building slug, e.g. icon-brickell"
    }
  }
}
get_layer_top_buildings
Advertised by the server during the last successful anonymous check.

The top condo buildings for one Miami Layer (ranked layers only), Miami-wide or in one neighborhood: rank, score, nearest place and counts.

get_layer_top_buildings input schema
{
  "type": "object",
  "required": [
    "layer"
  ],
  "properties": {
    "sort": {
      "type": "string",
      "description": "score (default) | nearest | density"
    },
    "layer": {
      "type": "string",
      "description": "layer slug from list_layers"
    },
    "limit": {
      "type": "integer",
      "maximum": 50,
      "minimum": 1,
      "description": "rows, default 20"
    },
    "neighborhood": {
      "type": "string",
      "description": "neighborhood slug (optional)"
    }
  }
}
list_developers
Advertised by the server during the last successful anonymous check.

Miami condo developer brands with a public Own.Miami page, ranked by the own.miami Developer Score (0 to 100 with a letter grade), with building counts, neighborhoods and years active.

list_developers input schema
{
  "type": "object",
  "properties": {}
}
get_developer
Advertised by the server during the last successful anonymous check.

One developer brand: the Developer Score with each axis explained, rank among scored developers, office city, and the portfolio of buildings it delivered or is building.

get_developer input schema
{
  "type": "object",
  "required": [
    "slug"
  ],
  "properties": {
    "slug": {
      "type": "string",
      "description": "developer slug from list_developers, e.g. related-group"
    }
  }
}
get_market_index
Advertised by the server during the last successful anonymous check.

The own.miami Buyer/Seller Market Index (0 to 100: buyer's market below 40, seller's above 60) for one neighborhood, or for every published neighborhood with the Miami-wide reading. Each signal (months of supply, sale-to-original-list, days on market, price cuts, momentum) is listed with its sample size.

get_market_index input schema
{
  "type": "object",
  "properties": {
    "neighborhood": {
      "type": "string",
      "description": "neighborhood slug (optional; omit for all)"
    }
  }
}
request_tour
Advertised by the server during the last successful anonymous check.

Request a showing for the person you are helping, at a listing (listingKey) or a building (buildingSlug). Requires their name and email, your agent block and humanConfirmed=true. They receive a confirmation email; use get_request_status with the returned token to follow up.

request_tour input schema
{
  "type": "object",
  "required": [
    "human",
    "agent",
    "humanConfirmed"
  ],
  "properties": {
    "agent": {
      "type": "object",
      "required": [
        "vendor",
        "name"
      ],
      "properties": {
        "name": {
          "type": "string",
          "description": "The assistant or model name"
        },
        "vendor": {
          "type": "string",
          "description": "Who you are: openai, anthropic, google, microsoft, perplexity, …"
        },
        "conversationRef": {
          "type": "string",
          "description": "Optional opaque reference to this conversation (never a transcript)"
        }
      }
    },
    "human": {
      "type": "object",
      "required": [
        "name",
        "email"
      ],
      "properties": {
        "name": {
          "type": "string",
          "description": "Full name of the person you are helping"
        },
        "email": {
          "type": "string",
          "format": "email",
          "description": "Their email — they receive a confirmation"
        },
        "phone": {
          "type": "string",
          "description": "Optional. Only with consent (read them the TCPA text at /for-ai)"
        },
        "consent": {
          "type": "object",
          "properties": {
            "sms": {
              "type": "boolean"
            },
            "contact": {
              "type": "boolean"
            },
            "textVersion": {
              "type": "string",
              "description": "Must be \"tcpa-v1\" when a phone is given"
            }
          }
        },
        "contactPref": {
          "type": "string",
          "description": "email | phone | whatsapp | text"
        }
      }
    },
    "message": {
      "type": "string",
      "description": "Optional note for the agent"
    },
    "agentKey": {
      "type": "string",
      "description": "Optional Own Miami agent key (raises limits, verifies attribution)"
    },
    "listingKey": {
      "type": "string",
      "description": "MLS listing key"
    },
    "buildingSlug": {
      "type": "string",
      "description": "building slug"
    },
    "humanConfirmed": {
      "type": "boolean",
      "const": true,
      "description": "You attest the person asked for this"
    },
    "preferredTimes": {
      "type": "array",
      "items": {
        "type": "object",
        "properties": {
          "date": {
            "type": "string",
            "description": "YYYY-MM-DD"
          },
          "window": {
            "type": "string",
            "description": "morning | afternoon | evening"
          }
        }
      },
      "maxItems": 3
    }
  }
}
ask_about_building
Advertised by the server during the last successful anonymous check.

Ask the partner agent a question about a building or a listing on behalf of the person (HOA, rules, assessments, availability). Fair-housing screened: keep it about the home, the building and the budget.

ask_about_building input schema
{
  "type": "object",
  "required": [
    "human",
    "agent",
    "humanConfirmed",
    "message"
  ],
  "properties": {
    "agent": {
      "type": "object",
      "required": [
        "vendor",
        "name"
      ],
      "properties": {
        "name": {
          "type": "string",
          "description": "The assistant or model name"
        },
        "vendor": {
          "type": "string",
          "description": "Who you are: openai, anthropic, google, microsoft, perplexity, …"
        },
        "conversationRef": {
          "type": "string",
          "description": "Optional opaque reference to this conversation (never a transcript)"
        }
      }
    },
    "human": {
      "type": "object",
      "required": [
        "name",
        "email"
      ],
      "properties": {
        "name": {
          "type": "string",
          "description": "Full name of the person you are helping"
        },
        "email": {
          "type": "string",
          "format": "email",
          "description": "Their email — they receive a confirmation"
        },
        "phone": {
          "type": "string",
          "description": "Optional. Only with consent (read them the TCPA text at /for-ai)"
        },
        "consent": {
          "type": "object",
          "properties": {
            "sms": {
              "type": "boolean"
            },
            "contact": {
              "type": "boolean"
            },
            "textVersion": {
              "type": "string",
              "description": "Must be \"tcpa-v1\" when a phone is given"
            }
          }
        },
        "contactPref": {
          "type": "string",
          "description": "email | phone | whatsapp | text"
        }
      }
    },
    "message": {
      "type": "string",
      "description": "The question"
    },
    "agentKey": {
      "type": "string",
      "description": "Optional Own Miami agent key (raises limits, verifies attribution)"
    },
    "listingKey": {
      "type": "string",
      "description": "MLS listing key"
    },
    "buildingSlug": {
      "type": "string",
      "description": "building slug"
    },
    "humanConfirmed": {
      "type": "boolean",
      "const": true,
      "description": "You attest the person asked for this"
    }
  }
}
register_interest
Advertised by the server during the last successful anonymous check.

Register the person’s interest in a pre-construction development (developmentSlug) or a building (buildingSlug).

register_interest input schema
{
  "type": "object",
  "required": [
    "human",
    "agent",
    "humanConfirmed"
  ],
  "properties": {
    "agent": {
      "type": "object",
      "required": [
        "vendor",
        "name"
      ],
      "properties": {
        "name": {
          "type": "string",
          "description": "The assistant or model name"
        },
        "vendor": {
          "type": "string",
          "description": "Who you are: openai, anthropic, google, microsoft, perplexity, …"
        },
        "conversationRef": {
          "type": "string",
          "description": "Optional opaque reference to this conversation (never a transcript)"
        }
      }
    },
    "human": {
      "type": "object",
      "required": [
        "name",
        "email"
      ],
      "properties": {
        "name": {
          "type": "string",
          "description": "Full name of the person you are helping"
        },
        "email": {
          "type": "string",
          "format": "email",
          "description": "Their email — they receive a confirmation"
        },
        "phone": {
          "type": "string",
          "description": "Optional. Only with consent (read them the TCPA text at /for-ai)"
        },
        "consent": {
          "type": "object",
          "properties": {
            "sms": {
              "type": "boolean"
            },
            "contact": {
              "type": "boolean"
            },
            "textVersion": {
              "type": "string",
              "description": "Must be \"tcpa-v1\" when a phone is given"
            }
          }
        },
        "contactPref": {
          "type": "string",
          "description": "email | phone | whatsapp | text"
        }
      }
    },
    "message": {
      "type": "string",
      "description": "Optional note"
    },
    "agentKey": {
      "type": "string",
      "description": "Optional Own Miami agent key (raises limits, verifies attribution)"
    },
    "buildingSlug": {
      "type": "string",
      "description": "building slug"
    },
    "humanConfirmed": {
      "type": "boolean",
      "const": true,
      "description": "You attest the person asked for this"
    },
    "developmentSlug": {
      "type": "string",
      "description": "development slug"
    }
  }
}
create_alert
Advertised by the server during the last successful anonymous check.

Set up an email alert for the person when matching condos list or drop in price. Nothing subscribes until they click the confirmation email this sends.

create_alert input schema
{
  "type": "object",
  "required": [
    "human",
    "agent",
    "humanConfirmed",
    "filters"
  ],
  "properties": {
    "agent": {
      "type": "object",
      "required": [
        "vendor",
        "name"
      ],
      "properties": {
        "name": {
          "type": "string",
          "description": "The assistant or model name"
        },
        "vendor": {
          "type": "string",
          "description": "Who you are: openai, anthropic, google, microsoft, perplexity, …"
        },
        "conversationRef": {
          "type": "string",
          "description": "Optional opaque reference to this conversation (never a transcript)"
        }
      }
    },
    "human": {
      "type": "object",
      "required": [
        "email"
      ],
      "properties": {
        "name": {
          "type": "string",
          "description": "name"
        },
        "email": {
          "type": "string",
          "format": "email",
          "description": "email"
        }
      }
    },
    "filters": {
      "type": "object",
      "description": "Search vocabulary: neighborhood, building, priceMax, bedsMin, …"
    },
    "agentKey": {
      "type": "string",
      "description": "Optional Own Miami agent key (raises limits, verifies attribution)"
    },
    "frequency": {
      "type": "string",
      "description": "instant | daily | weekly (default daily)"
    },
    "humanConfirmed": {
      "type": "boolean",
      "const": true,
      "description": "You attest the person asked for this"
    }
  }
}
get_request_status
Advertised by the server during the last successful anonymous check.

Status of a request you submitted (new | acknowledged | scheduled | completed | canceled), by its id and statusToken.

get_request_status input schema
{
  "type": "object",
  "required": [
    "requestId",
    "statusToken"
  ],
  "properties": {
    "requestId": {
      "type": "string",
      "description": "request id"
    },
    "statusToken": {
      "type": "string",
      "description": "statusToken from the write result"
    }
  }
}
ask_concierge
Advertised by the server during the last successful anonymous check.

Ask the grounded Own Miami concierge a buyer question (which buildings fit a budget, how a building compares, what to know about a neighborhood). Every number in the answer is checked against the database; recommendations carry URLs to cite. Requires an agent key.

ask_concierge input schema
{
  "type": "object",
  "required": [
    "agent",
    "message",
    "agentKey"
  ],
  "properties": {
    "agent": {
      "type": "object",
      "required": [
        "vendor",
        "name"
      ],
      "properties": {
        "name": {
          "type": "string",
          "description": "The assistant or model name"
        },
        "vendor": {
          "type": "string",
          "description": "Who you are: openai, anthropic, google, microsoft, perplexity, …"
        },
        "conversationRef": {
          "type": "string",
          "description": "Optional opaque reference to this conversation (never a transcript)"
        }
      }
    },
    "context": {
      "type": "object",
      "properties": {
        "listingKey": {
          "type": "string",
          "description": "MLS key in view"
        },
        "buildingSlug": {
          "type": "string",
          "description": "building in view"
        },
        "neighborhoodSlug": {
          "type": "string",
          "description": "neighborhood in view"
        }
      }
    },
    "message": {
      "type": "string",
      "description": "The question, ≤600 characters"
    },
    "agentKey": {
      "type": "string",
      "description": "Own Miami agent key"
    },
    "conversationId": {
      "type": "string",
      "description": "From a previous answer, to continue the thread"
    }
  }
}

Prompts

Not advertised

No prompt definitions available.

Resources

1 advertised

llms.txt

Advertised by the server during the last successful anonymous check.

Map of the site for AI tools

llms.txt URI
own-miami://llms.txt

MIME type: text/plain

Building fact sheet (markdown)

Advertised by the server during the last successful anonymous check.

The building page as text: scores, inventory, verified health records, FAQs, sources, attribution.

Building fact sheet (markdown) URI template
own-miami://buildings/{slug}

MIME type: text/markdown

Neighborhood fact sheet (markdown)

Advertised by the server during the last successful anonymous check.

Live tiles, monthly stats and buildings for a neighborhood.

Neighborhood fact sheet (markdown) URI template
own-miami://neighborhoods/{slug}

MIME type: text/markdown

30-day availability

Aggregated from read-only remote checks; this is not a tool-execution or security guarantee.

Successful checks
1 of 1 (100%)
Average latency
822 ms
95th percentile latency
822 ms

Maintenance history

Public check and source-refresh events. Editorial and ownership records remain private.

  • · probe · passed · 822 ms · metadata changed · 22 tool(s), 1 resource(s), 2 resource template(s)

Connect from your client

Each snippet registers the same endpoint; pick the client you use.

This server is operated by the named third party. Listing and endpoint checks are not an endorsement or a security audit. Review the operator's permissions, terms, and data handling before connecting. How listings are checked and corrected.

Claude Code

Run this once in a terminal. It registers the remote server. Use --scope project to write .mcp.json for the repo.
Claude Code configuration
claude mcp add --transport http own-miami-mcp https://own.miami/mcp

Codex

Run this once. Codex stores MCP servers in ~/.codex/config.toml (or .codex/config.toml in a trusted project).
Codex configuration
codex mcp add own-miami-mcp --url https://own.miami/mcp

Cursor

Merge this server into .cursor/mcp.json in your project, then enable own-miami-mcp in your MCP settings.
Cursor configuration
{
  "mcpServers": {
    "own-miami-mcp": {
      "url": "https://own.miami/mcp"
    }
  }
}

Cline

Merge this into cline_mcp_settings.json (Cline → MCP Servers → Configure).
Cline configuration
{
  "mcpServers": {
    "own-miami-mcp": {
      "type": "streamableHttp",
      "url": "https://own.miami/mcp",
      "disabled": false
    }
  }
}

VS Code

Merge this server into .vscode/mcp.json. Use MCP: List Servers to start own-miami-mcp and inspect its tools.
VS Code configuration
{
  "servers": {
    "own-miami-mcp": {
      "type": "http",
      "url": "https://own.miami/mcp"
    }
  }
}

Gemini CLI

Run this once. It writes .gemini/settings.json in the current project; pass --scope user for ~/.gemini/settings.json.
Gemini CLI configuration
gemini mcp add --transport http own-miami-mcp https://own.miami/mcp

Claude Desktop

Merge this into claude_desktop_config.json (macOS: ~/Library/Application Support/Claude/, Windows: %APPDATA%\Claude\), then restart Claude Desktop.
Claude Desktop configuration
{
  "mcpServers": {
    "own-miami-mcp": {
      "url": "https://own.miami/mcp"
    }
  }
}

Windsurf

Merge this into ~/.codeium/windsurf/mcp_config.json, then refresh MCP in Cascade. Windsurf remote servers use serverUrl, not url.
Windsurf configuration
{
  "mcpServers": {
    "own-miami-mcp": {
      "serverUrl": "https://own.miami/mcp"
    }
  }
}

Let your agent find its tools

Find servers like Own Miami MCP from your agent. Add Koskamo once to search the index for endpoints, access requirements, and client setup. Public discovery needs no key.

Do you run Own Miami MCP?

Prove ownership with a DNS record, a well-known file, or your Official MCP Registry entry, and your edits publish immediately. Proofs are re-checked weekly; admins can still hide or remove a listing.

Claim this listing