Mogean POI Data Store MCP
An official MCP server provided by Mogean that allows AI agents to access and query the Mogean US points-of-interest catalog. It enables searching and counting locations by brand, category, and state, leveraging the structured data dictionary and schema provided in the documentation.
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.
https://store.mogean.com/mcpWhat you can do with it
- Search for specific business locations by brand name
- Count POIs by geographic state or category
- Access structured POI data for market analysis
Source and maintenance
Protocol and capabilities
- Server
- mogean-store 0.1.0
- MCP protocol
- 2025-06-18
- Tools
- 6 advertised
- Resources
- 8 advertised
- Resource templates
- 0 advertised
- Prompts
- Not advertised
{
"tools": {
"listChanged": false
},
"resources": {
"listChanged": false
}
}Server-provided instructions
Untrusted server output shown for inspection. It is not Koskamo guidance and is excluded from knowledge search.
Tools
6 advertised
search — Search the catalog
Search Mogean's catalog of US point-of-interest datasets: brands, categories, states, government sources and flagship datasets. Returns matching products with an id, title, URL and short text; pass an id to fetch for the full product card.
{
"type": "object",
"required": [
"query"
],
"properties": {
"kinds": {
"type": "array",
"items": {
"enum": [
"brand",
"category",
"state",
"gov",
"flagship"
],
"type": "string"
},
"maxItems": 5,
"description": "Limit results to these product kinds."
},
"limit": {
"type": "integer",
"maximum": 50,
"minimum": 1,
"description": "Results per page (default 10, at most 50)."
},
"query": {
"type": "string",
"maxLength": 200,
"minLength": 1,
"description": "What to look for, e.g. a brand, category, state or registry name."
},
"cursor": {
"type": "string",
"maxLength": 200,
"description": "next_cursor from a previous page of the same search."
},
"response_format": {
"enum": [
"concise",
"detailed"
],
"type": "string",
"default": "concise",
"description": "concise (default) returns a short summary; detailed adds the full structured result as text."
}
},
"additionalProperties": false
}{
"type": "object",
"required": [
"tool",
"status",
"response_format",
"message"
],
"properties": {
"data": {
"type": "object",
"required": [
"results",
"total",
"next_cursor",
"release"
],
"properties": {
"total": {
"type": "integer",
"minimum": 0
},
"release": {
"type": "object",
"required": [
"drop_date",
"manifest_version",
"pricing_config_version",
"as_of"
],
"properties": {
"as_of": {
"type": "string"
},
"drop_date": {
"type": "string"
},
"manifest_version": {
"type": "string"
},
"pricing_config_version": {
"type": "string"
}
},
"additionalProperties": false
},
"results": {
"type": "array",
"items": {
"type": "object",
"required": [
"id",
"title",
"url",
"text",
"kind",
"record_count",
"locations",
"price_from",
"sku"
],
"properties": {
"id": {
"type": "string"
},
"sku": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"url": {
"type": "string"
},
"kind": {
"enum": [
"brand",
"category",
"state",
"gov",
"flagship"
],
"type": "string"
},
"text": {
"type": "string"
},
"title": {
"type": "string"
},
"registry": {
"anyOf": [
{
"type": "object",
"required": [
"registry_name",
"publisher_agency",
"source_licence",
"update_cadence",
"registry_id_name",
"source_url",
"record_count",
"registry_id_in_rows"
],
"properties": {
"source_url": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"record_count": {
"anyOf": [
{
"type": "integer",
"minimum": 0
},
{
"type": "null"
}
]
},
"registry_name": {
"type": "string"
},
"source_licence": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"update_cadence": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"publisher_agency": {
"type": "string"
},
"registry_id_name": {
"type": "string"
},
"registry_id_in_rows": {
"type": "boolean",
"const": false
}
},
"additionalProperties": false
},
{
"type": "null"
}
]
},
"also_from": {
"type": "string",
"description": "Brands only, and only on a suggestion rather than a match: the parent company this brand shares with a brand the query matched (or the parent company the query named). Absent on every direct match."
},
"locations": {
"anyOf": [
{
"type": "integer",
"minimum": 0
},
{
"type": "null"
}
],
"description": "The location count of a category, state, government source or flagship. Null for a brand, whose store count is the record_count band; a brand's in-store department locations are sub_locations."
},
"price_from": {
"anyOf": [
{
"type": "object",
"required": [
"amount_usd",
"term",
"licence"
],
"properties": {
"term": {
"enum": [
"one_time",
"subscription"
],
"type": "string"
},
"licence": {
"type": "string",
"const": "internal"
},
"amount_usd": {
"type": "number"
}
},
"additionalProperties": false
},
{
"type": "null"
}
]
},
"record_count": {
"anyOf": [
{
"type": "object",
"required": [
"low",
"high"
],
"properties": {
"low": {
"type": "integer"
},
"high": {
"type": "integer"
}
},
"additionalProperties": false
},
{
"type": "null"
}
],
"description": "Brands only: the band around the brand's store count (its own stores and outlets). In-store department locations are not in it; they are sub_locations."
},
"sub_locations": {
"type": "integer",
"minimum": 0,
"description": "Brands only: in-store department locations sold with the brand (e.g. a pharmacy inside its stores). Not stores, and not in record_count; a brand dataset ships its stores plus these."
}
},
"additionalProperties": false
},
"maxItems": 50
},
"next_cursor": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
}
},
"additionalProperties": false
},
"tool": {
"type": "string",
"const": "search"
},
"limit": {
"type": "object",
"required": [
"scope",
"limit",
"window_seconds",
"reset_at",
"retry_after_seconds"
],
"properties": {
"limit": {
"type": "integer",
"minimum": 0
},
"scope": {
"type": "string"
},
"reset_at": {
"type": [
"string",
"null"
]
},
"window_seconds": {
"type": "integer",
"minimum": 0
},
"retry_after_seconds": {
"type": [
"integer",
"null"
],
"minimum": 0
}
},
"additionalProperties": false
},
"errors": {
"type": "array",
"items": {
"type": "object",
"required": [
"field",
"code",
"message"
],
"properties": {
"code": {
"type": "string"
},
"field": {
"type": "string"
},
"message": {
"type": "string"
}
},
"additionalProperties": false
},
"maxItems": 20
},
"status": {
"enum": [
"ok",
"not_available",
"invalid_input",
"internal_error",
"rate_limited"
],
"type": "string"
},
"message": {
"type": "string"
},
"drop_date": {
"type": "string"
},
"permalink": {
"type": "string"
},
"attribution": {
"type": "object"
},
"response_format": {
"enum": [
"concise",
"detailed"
],
"type": "string"
},
"manifest_version": {
"type": "string"
}
},
"additionalProperties": false
}{
"title": "Search the catalog",
"readOnlyHint": true,
"openWorldHint": false,
"idempotentHint": true,
"destructiveHint": false
}fetch — Fetch a product
Fetch one catalog product by the id that search returned: what it contains, coverage, fill rates, freshness, provenance and published prices per licence tier.
{
"type": "object",
"required": [
"id"
],
"properties": {
"id": {
"type": "string",
"maxLength": 200,
"minLength": 1,
"description": "A product id from search, such as brand:<slug>, or a product sku."
},
"response_format": {
"enum": [
"concise",
"detailed"
],
"type": "string",
"default": "concise",
"description": "concise (default) returns a short summary; detailed adds the full structured result as text."
}
},
"additionalProperties": false
}{
"type": "object",
"required": [
"tool",
"status",
"response_format",
"message"
],
"properties": {
"data": {
"type": "object",
"required": [
"id",
"title",
"url",
"text",
"metadata"
],
"properties": {
"id": {
"type": "string"
},
"url": {
"type": "string"
},
"text": {
"type": "string"
},
"title": {
"type": "string"
},
"metadata": {
"type": "object",
"required": [
"kind",
"key",
"lifecycle",
"category",
"record_count",
"locations",
"states_covered",
"top_states",
"fill_rates",
"fill_rates_scope",
"prices",
"self_serve",
"geometry",
"extraction",
"provenance",
"release",
"store_next_steps"
],
"properties": {
"key": {
"type": "string"
},
"kind": {
"enum": [
"brand",
"category",
"state",
"gov",
"flagship"
],
"type": "string"
},
"prices": {
"type": "object",
"required": [
"currency",
"one_time",
"annual_subscription",
"redistribution"
],
"properties": {
"currency": {
"type": "string",
"const": "USD"
},
"one_time": {
"anyOf": [
{
"type": "object",
"required": [
"internal_usd",
"embedded_usd",
"sku"
],
"properties": {
"sku": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"embedded_usd": {
"type": "number"
},
"internal_usd": {
"type": "number"
}
},
"additionalProperties": false
},
{
"type": "null"
}
]
},
"redistribution": {
"type": "string",
"const": "contact_sales"
},
"annual_subscription": {
"anyOf": [
{
"type": "object",
"required": [
"internal_usd",
"embedded_usd"
],
"properties": {
"embedded_usd": {
"type": "number"
},
"internal_usd": {
"type": "number"
}
},
"additionalProperties": false
},
{
"type": "null"
}
]
}
},
"additionalProperties": false
},
"release": {
"type": "object"
},
"category": {
"anyOf": [
{
"type": "object",
"required": [
"l1",
"leaf",
"leaf_slug"
],
"properties": {
"l1": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"leaf": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"leaf_slug": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
}
},
"additionalProperties": false
},
{
"type": "null"
}
]
},
"geometry": {
"anyOf": [
{
"type": "object"
},
{
"type": "null"
}
]
},
"registry": {
"anyOf": [
{
"type": "object",
"required": [
"registry_name",
"publisher_agency",
"source_licence",
"update_cadence",
"registry_id_name",
"source_url",
"record_count",
"registry_id_in_rows"
],
"properties": {
"source_url": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"record_count": {
"anyOf": [
{
"type": "integer",
"minimum": 0
},
{
"type": "null"
}
]
},
"registry_name": {
"type": "string"
},
"source_licence": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"update_cadence": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"publisher_agency": {
"type": "string"
},
"registry_id_name": {
"type": "string"
},
"registry_id_in_rows": {
"type": "boolean",
"const": false
}
},
"additionalProperties": false
},
{
"type": "null"
}
]
},
"lifecycle": {
"enum": [
"active",
"listed"
],
"type": "string"
},
"locations": {
"anyOf": [
{
"type": "integer"
},
{
"type": "null"
}
]
},
"extraction": {
"anyOf": [
{
"type": "object"
},
{
"type": "null"
}
]
},
"fill_rates": {
"anyOf": [
{
"type": "object"
},
{
"type": "null"
}
]
},
"provenance": {
"type": "object"
},
"self_serve": {
"type": "object",
"required": [
"priced_for_site_checkout",
"agent_one_time_eligible",
"redistribution_via_agent",
"geometry_with_redistribution",
"notes"
],
"properties": {
"notes": {
"type": "array",
"items": {
"type": "string"
}
},
"agent_one_time_eligible": {
"type": "boolean"
},
"priced_for_site_checkout": {
"type": "boolean"
},
"redistribution_via_agent": {
"type": "boolean"
},
"geometry_with_redistribution": {
"type": "boolean"
}
},
"additionalProperties": false
},
"top_states": {
"type": "array",
"items": {
"type": "object",
"required": [
"state",
"count"
],
"properties": {
"count": {
"type": "integer"
},
"state": {
"type": "string"
}
},
"additionalProperties": false
},
"maxItems": 10
},
"record_count": {
"anyOf": [
{
"type": "object"
},
{
"type": "null"
}
]
},
"states_covered": {
"anyOf": [
{
"type": "integer"
},
{
"type": "null"
}
]
},
"fill_rates_scope": {
"enum": [
"product",
"national_only_see_schema_resource"
],
"type": "string"
},
"store_next_steps": {
"anyOf": [
{
"type": "object",
"required": [
"where",
"what",
"price",
"steps",
"agent_can_complete",
"relay"
],
"properties": {
"what": {
"type": "string"
},
"price": {
"anyOf": [
{
"type": "object",
"required": [
"amount_usd",
"term",
"license",
"geometry_add_on"
],
"properties": {
"term": {
"enum": [
"one_time",
"subscription"
],
"type": "string"
},
"license": {
"enum": [
"internal",
"embedded",
"redistribution"
],
"type": "string"
},
"amount_usd": {
"type": "number",
"minimum": 0
},
"geometry_add_on": {
"type": "boolean"
}
},
"additionalProperties": false
},
{
"type": "null"
}
]
},
"relay": {
"type": "string"
},
"steps": {
"type": "array",
"items": {
"type": "string"
},
"minItems": 1
},
"where": {
"type": "string"
},
"contact": {
"type": "string"
},
"products": {
"type": "array",
"items": {
"type": "object",
"required": [
"product_id",
"title",
"page_url",
"term",
"license",
"geometry_add_on",
"price_usd"
],
"properties": {
"term": {
"enum": [
"one_time",
"subscription"
],
"type": "string"
},
"title": {
"type": "string"
},
"license": {
"enum": [
"internal",
"embedded",
"redistribution"
],
"type": "string"
},
"page_url": {
"type": "string"
},
"price_usd": {
"anyOf": [
{
"type": "number",
"minimum": 0
},
{
"type": "null"
}
]
},
"product_id": {
"type": "string"
},
"geometry_add_on": {
"type": "boolean"
}
},
"additionalProperties": false
},
"minItems": 2
},
"total_usd": {
"type": "number",
"minimum": 0
},
"send_to_sales": {
"type": "object",
"required": [
"cut",
"full_cut_hash",
"license",
"term"
],
"properties": {
"cut": {
"type": "object"
},
"term": {
"enum": [
"one_time",
"subscription"
],
"type": "string"
},
"license": {
"enum": [
"internal",
"embedded",
"redistribution"
],
"type": "string"
},
"full_cut_hash": {
"type": "string",
"pattern": "^[0-9a-f]{64}$"
}
},
"description": "For a custom cut Mogean sales handles: what the buyer sends them, the cut, in the same shape as the cut input, and its full_cut_hash, and the licence and term asked for.",
"additionalProperties": false
},
"agent_can_complete": {
"type": "boolean",
"const": false
}
},
"description": "What the buyer does on the Mogean store to complete this; an agent cannot. Relay `relay` and the ordered `steps` with the `where` link.",
"additionalProperties": false
},
{
"type": "null"
}
]
}
},
"additionalProperties": false
}
},
"additionalProperties": false
},
"tool": {
"type": "string",
"const": "fetch"
},
"limit": {
"type": "object",
"required": [
"scope",
"limit",
"window_seconds",
"reset_at",
"retry_after_seconds"
],
"properties": {
"limit": {
"type": "integer",
"minimum": 0
},
"scope": {
"type": "string"
},
"reset_at": {
"type": [
"string",
"null"
]
},
"window_seconds": {
"type": "integer",
"minimum": 0
},
"retry_after_seconds": {
"type": [
"integer",
"null"
],
"minimum": 0
}
},
"additionalProperties": false
},
"errors": {
"type": "array",
"items": {
"type": "object",
"required": [
"field",
"code",
"message"
],
"properties": {
"code": {
"type": "string"
},
"field": {
"type": "string"
},
"message": {
"type": "string"
}
},
"additionalProperties": false
},
"maxItems": 20
},
"status": {
"enum": [
"ok",
"not_available",
"invalid_input",
"internal_error",
"rate_limited",
"not_found"
],
"type": "string"
},
"message": {
"type": "string"
},
"drop_date": {
"type": "string"
},
"permalink": {
"type": "string"
},
"attribution": {
"type": "object"
},
"response_format": {
"enum": [
"concise",
"detailed"
],
"type": "string"
},
"manifest_version": {
"type": "string"
}
},
"additionalProperties": false
}{
"title": "Fetch a product",
"readOnlyHint": true,
"openWorldHint": false,
"idempotentHint": true,
"destructiveHint": false
}mogean_count — Count locations
Count sellable US locations, exactly, from the current data release. Use fact for one brand, category, leaf category or government source, optionally in a state; for a brand in a state, a city works when it is one of the top cities listed on that brand's page for that state. Use cut for any combination of brands, categories, leaf categories, states, government sources and tiers. Ids from search are accepted as they are. Returns a link to the page a person can check, the cut and full_cut_hash mogean_quote takes, and whether mogean_quote can price that cut at the internal licence (higher licences cost more and can still be refused).
{
"type": "object",
"properties": {
"cut": {
"type": "object",
"properties": {
"tiers": {
"type": "array",
"items": {
"type": "string",
"maxLength": 200
},
"maxItems": 6,
"description": "Provenance tier groups: pipeline, government, fsq, overture. PIPELINE_AUTHORITATIVE, GOVERNMENT_AUTHORITATIVE and OVERTURE_SUPPLEMENT (as by_tier names them) select their group; the three FSQ_ tiers are selected together as fsq."
},
"brands": {
"type": "array",
"items": {
"type": "string",
"maxLength": 200
},
"maxItems": 200,
"description": "Brands: ids from search (brand:<slug>) or bare slugs (fetch metadata.key)."
},
"format": {
"enum": [
"csv_parquet",
"csv",
"parquet",
"geojson"
],
"type": "string",
"description": "Delivery format."
},
"states": {
"type": "array",
"items": {
"type": "string",
"maxLength": 200
},
"maxItems": 200,
"description": "States: two-letter US codes, or ids from search (state:TX)."
},
"columns": {
"type": "array",
"items": {
"type": "string",
"maxLength": 200
},
"maxItems": 200,
"description": "Column names to deliver; empty means every column."
},
"categories": {
"type": "array",
"items": {
"type": "string",
"maxLength": 200
},
"maxItems": 200,
"description": "Categories: ids from search (category:<slug>) or bare slugs (fetch metadata.key)."
},
"gov_sources": {
"type": "array",
"items": {
"type": "string",
"maxLength": 200
},
"maxItems": 200,
"description": "Government sources: ids from search (gov:<slug>) or bare slugs (fetch metadata.key)."
},
"leaf_categories": {
"type": "array",
"items": {
"type": "string",
"maxLength": 200
},
"maxItems": 200,
"description": "Leaf categories: slugs from fetch (metadata.category.leaf_slug), or a leaf name fetch shows when it names one leaf."
},
"include_geometry": {
"type": "boolean",
"description": "Add the building-geometry file."
}
},
"description": "A custom cut: every non-empty list narrows the selection.",
"additionalProperties": false
},
"fact": {
"type": "object",
"properties": {
"gov": {
"type": "string",
"maxLength": 200,
"minLength": 1,
"description": "A government source: the id search returned (gov:<slug>) or the bare slug from fetch's metadata.key."
},
"city": {
"type": "string",
"maxLength": 100,
"minLength": 1,
"description": "City name; needs brand and state. Only the top cities listed on that brand's page for that state have a count; any other city returns needs_serving_layer."
},
"leaf": {
"type": "string",
"maxLength": 200,
"minLength": 1,
"description": "A leaf category: fetch's metadata.category.leaf_slug, or the leaf name fetch shows (metadata.category.leaf) when it names one leaf."
},
"brand": {
"type": "string",
"maxLength": 200,
"minLength": 1,
"description": "A brand: the id search returned (brand:<slug>) or the bare slug from fetch's metadata.key."
},
"state": {
"type": "string",
"maxLength": 8,
"minLength": 2,
"description": "A two-letter US state code, or the id search returned for a state (state:TX)."
},
"county": {
"type": "string",
"maxLength": 100,
"minLength": 1,
"description": "County counts are not published yet: a county question returns needs_serving_layer with the state's page."
},
"category": {
"type": "string",
"maxLength": 200,
"minLength": 1,
"description": "A category: the id search returned (category:<slug>) or the bare slug from fetch's metadata.key."
}
},
"description": "A fact question: one of brand, category, leaf or gov; optionally a state; for a brand inside a state, optionally a city.",
"additionalProperties": false
},
"response_format": {
"enum": [
"concise",
"detailed"
],
"type": "string",
"default": "concise",
"description": "concise (default) returns a short summary; detailed adds the full structured result as text."
}
},
"additionalProperties": false
}{
"type": "object",
"required": [
"tool",
"status",
"response_format",
"message"
],
"properties": {
"data": {
"type": "object",
"required": [
"mode"
],
"properties": {
"cut": {
"type": "object"
},
"mode": {
"enum": [
"fact",
"cut"
],
"type": "string"
},
"query": {
"type": "object"
},
"reason": {
"type": "string"
},
"buy_url": {
"type": "string"
},
"by_tier": {
"type": "object",
"additionalProperties": {
"type": "integer",
"minimum": 0
}
},
"by_state": {
"type": "object",
"additionalProperties": {
"type": "integer",
"minimum": 0
}
},
"cut_hash": {
"type": "string"
},
"quotable": {
"type": "boolean",
"description": "Whether mogean_quote prices this cut at the internal licence. Embedded (3x) and redistribution (10x) licences can still be refused: agents do not quote Redistribution, and where an agent quote limit is set, a total above it is refused."
},
"by_tier_exact": {
"type": "boolean"
},
"full_cut_hash": {
"type": "string",
"pattern": "^[0-9a-f]{64}$"
},
"quote_refusal": {
"type": "object",
"required": [
"reason",
"message"
],
"properties": {
"sku": {
"type": [
"string",
"null"
]
},
"reason": {
"enum": [
"not_found",
"flagship_contact_sales",
"redistribution_contact_sales",
"geometry_redistribution",
"subscription_not_available_via_mcp",
"geometry_unavailable",
"oversized",
"needs_serving_layer",
"format_not_available",
"empty_cut",
"oversized_spec",
"zero_rows",
"cut_not_sellable",
"above_mcp_cap"
],
"type": "string"
},
"contact": {
"type": "string"
},
"message": {
"type": "string"
},
"flagship": {
"type": "object",
"required": [
"page_url"
],
"properties": {
"page_url": {
"type": "string"
}
},
"additionalProperties": false
},
"page_url": {
"type": "string"
},
"product_id": {
"type": "string"
},
"store_next_steps": {
"type": "object",
"required": [
"where",
"what",
"price",
"steps",
"agent_can_complete",
"relay"
],
"properties": {
"what": {
"type": "string"
},
"price": {
"anyOf": [
{
"type": "object",
"required": [
"amount_usd",
"term",
"license",
"geometry_add_on"
],
"properties": {
"term": {
"enum": [
"one_time",
"subscription"
],
"type": "string"
},
"license": {
"enum": [
"internal",
"embedded",
"redistribution"
],
"type": "string"
},
"amount_usd": {
"type": "number",
"minimum": 0
},
"geometry_add_on": {
"type": "boolean"
}
},
"additionalProperties": false
},
{
"type": "null"
}
]
},
"relay": {
"type": "string"
},
"steps": {
"type": "array",
"items": {
"type": "string"
},
"minItems": 1
},
"where": {
"type": "string"
},
"contact": {
"type": "string"
},
"products": {
"type": "array",
"items": {
"type": "object",
"required": [
"product_id",
"title",
"page_url",
"term",
"license",
"geometry_add_on",
"price_usd"
],
"properties": {
"term": {
"enum": [
"one_time",
"subscription"
],
"type": "string"
},
"title": {
"type": "string"
},
"license": {
"enum": [
"internal",
"embedded",
"redistribution"
],
"type": "string"
},
"page_url": {
"type": "string"
},
"price_usd": {
"anyOf": [
{
"type": "number",
"minimum": 0
},
{
"type": "null"
}
]
},
"product_id": {
"type": "string"
},
"geometry_add_on": {
"type": "boolean"
}
},
"additionalProperties": false
},
"minItems": 2
},
"total_usd": {
"type": "number",
"minimum": 0
},
"send_to_sales": {
"type": "object",
"required": [
"cut",
"full_cut_hash",
"license",
"term"
],
"properties": {
"cut": {
"type": "object"
},
"term": {
"enum": [
"one_time",
"subscription"
],
"type": "string"
},
"license": {
"enum": [
"internal",
"embedded",
"redistribution"
],
"type": "string"
},
"full_cut_hash": {
"type": "string",
"pattern": "^[0-9a-f]{64}$"
}
},
"description": "For a custom cut Mogean sales handles: what the buyer sends them, the cut, in the same shape as the cut input, and its full_cut_hash, and the licence and term asked for.",
"additionalProperties": false
},
"agent_can_complete": {
"type": "boolean",
"const": false
}
},
"description": "What the buyer does on the Mogean store to complete this; an agent cannot. Relay `relay` and the ordered `steps` with the `where` link.",
"additionalProperties": false
}
},
"additionalProperties": false
},
"sellable_count": {
"type": "integer",
"minimum": 0
},
"permalink_omitted": {
"enum": [
"too_long"
],
"type": "string"
},
"count_under_verification": {
"type": "boolean"
}
},
"additionalProperties": false
},
"tool": {
"type": "string",
"const": "mogean_count"
},
"limit": {
"type": "object",
"required": [
"scope",
"limit",
"window_seconds",
"reset_at",
"retry_after_seconds"
],
"properties": {
"limit": {
"type": "integer",
"minimum": 0
},
"scope": {
"type": "string"
},
"reset_at": {
"type": [
"string",
"null"
]
},
"window_seconds": {
"type": "integer",
"minimum": 0
},
"retry_after_seconds": {
"type": [
"integer",
"null"
],
"minimum": 0
}
},
"additionalProperties": false
},
"errors": {
"type": "array",
"items": {
"type": "object",
"required": [
"field",
"code",
"message"
],
"properties": {
"code": {
"type": "string"
},
"field": {
"type": "string"
},
"message": {
"type": "string"
}
},
"additionalProperties": false
},
"maxItems": 20
},
"status": {
"enum": [
"ok",
"not_available",
"invalid_input",
"internal_error",
"rate_limited",
"needs_serving_layer",
"not_found"
],
"type": "string"
},
"message": {
"type": "string"
},
"drop_date": {
"type": "string"
},
"permalink": {
"type": "string"
},
"attribution": {
"type": "object"
},
"response_format": {
"enum": [
"concise",
"detailed"
],
"type": "string"
},
"manifest_version": {
"type": "string"
}
},
"additionalProperties": false
}{
"title": "Count locations",
"readOnlyHint": true,
"openWorldHint": false,
"idempotentHint": true,
"destructiveHint": false
}mogean_preview — Preview rows
Show up to 10 sample rows from one brand's dataset, with the sources and licences they come from. The timezone column is withheld.
{
"type": "object",
"required": [
"slug"
],
"properties": {
"slug": {
"type": "string",
"maxLength": 200,
"minLength": 1,
"description": "A brand: the id search returned (brand:<slug>) or the bare slug from fetch's metadata.key."
},
"response_format": {
"enum": [
"concise",
"detailed"
],
"type": "string",
"default": "concise",
"description": "concise (default) returns a short summary; detailed adds the full structured result as text."
}
},
"additionalProperties": false
}{
"type": "object",
"required": [
"tool",
"status",
"response_format",
"message"
],
"properties": {
"data": {
"type": "object",
"required": [
"slug",
"columns",
"rows",
"cached"
],
"properties": {
"rows": {
"type": "array",
"items": {
"type": "object"
},
"maxItems": 10
},
"slug": {
"type": "string"
},
"cached": {
"type": "boolean"
},
"columns": {
"type": "array",
"items": {
"type": "string"
}
}
},
"additionalProperties": false
},
"tool": {
"type": "string",
"const": "mogean_preview"
},
"limit": {
"type": "object",
"required": [
"scope",
"limit",
"window_seconds",
"reset_at",
"retry_after_seconds"
],
"properties": {
"limit": {
"type": "integer",
"minimum": 0
},
"scope": {
"type": "string"
},
"reset_at": {
"type": [
"string",
"null"
]
},
"window_seconds": {
"type": "integer",
"minimum": 0
},
"retry_after_seconds": {
"type": [
"integer",
"null"
],
"minimum": 0
}
},
"additionalProperties": false
},
"errors": {
"type": "array",
"items": {
"type": "object",
"required": [
"field",
"code",
"message"
],
"properties": {
"code": {
"type": "string"
},
"field": {
"type": "string"
},
"message": {
"type": "string"
}
},
"additionalProperties": false
},
"maxItems": 20
},
"status": {
"enum": [
"ok",
"not_available",
"invalid_input",
"internal_error",
"rate_limited",
"not_found",
"temporarily_unavailable"
],
"type": "string"
},
"message": {
"type": "string"
},
"drop_date": {
"type": "string"
},
"permalink": {
"type": "string"
},
"attribution": {
"type": "object"
},
"response_format": {
"enum": [
"concise",
"detailed"
],
"type": "string"
},
"manifest_version": {
"type": "string"
}
},
"additionalProperties": false
}{
"title": "Preview rows",
"readOnlyHint": true,
"openWorldHint": false,
"idempotentHint": true,
"destructiveHint": false
}mogean_quote — Quote a price
Get the price of a selection: use this whenever someone asks what data would cost, the total for several products, the price with building geometry added, or the price at a licence tier for their use, instead of reading list prices from a product card. Price catalog products (items: sku from search or fetch, licence, optional building geometry) or one custom cut, such as chosen brands in chosen states (cut plus the full_cut_hash from mogean_count, and a licence). Prices are computed by the store and equal the product page; one-time prices at the internal or embedded licence only. A priced quote returns the total and can carry a quote_id that holds the price for up to 30 minutes.
{
"type": "object",
"properties": {
"cut": {
"type": "object",
"properties": {
"tiers": {
"type": "array",
"items": {
"type": "string",
"maxLength": 200
},
"maxItems": 6,
"description": "Provenance tier groups: pipeline, government, fsq, overture. PIPELINE_AUTHORITATIVE, GOVERNMENT_AUTHORITATIVE and OVERTURE_SUPPLEMENT (as by_tier names them) select their group; the three FSQ_ tiers are selected together as fsq."
},
"brands": {
"type": "array",
"items": {
"type": "string",
"maxLength": 200
},
"maxItems": 200,
"description": "Brands: ids from search (brand:<slug>) or bare slugs (fetch metadata.key)."
},
"format": {
"enum": [
"csv_parquet",
"csv",
"parquet",
"geojson"
],
"type": "string",
"description": "Delivery format."
},
"states": {
"type": "array",
"items": {
"type": "string",
"maxLength": 200
},
"maxItems": 200,
"description": "States: two-letter US codes, or ids from search (state:TX)."
},
"columns": {
"type": "array",
"items": {
"type": "string",
"maxLength": 200
},
"maxItems": 200,
"description": "Column names to deliver; empty means every column."
},
"categories": {
"type": "array",
"items": {
"type": "string",
"maxLength": 200
},
"maxItems": 200,
"description": "Categories: ids from search (category:<slug>) or bare slugs (fetch metadata.key)."
},
"gov_sources": {
"type": "array",
"items": {
"type": "string",
"maxLength": 200
},
"maxItems": 200,
"description": "Government sources: ids from search (gov:<slug>) or bare slugs (fetch metadata.key)."
},
"leaf_categories": {
"type": "array",
"items": {
"type": "string",
"maxLength": 200
},
"maxItems": 200,
"description": "Leaf categories: slugs from fetch (metadata.category.leaf_slug), or a leaf name fetch shows when it names one leaf."
},
"include_geometry": {
"type": "boolean",
"description": "Add the building-geometry file."
}
},
"description": "A custom cut: every non-empty list narrows the selection.",
"additionalProperties": false
},
"term": {
"enum": [
"one_time",
"subscription"
],
"type": "string",
"description": "one_time (default). Agents cannot quote subscriptions."
},
"items": {
"type": "array",
"items": {
"type": "object",
"required": [
"sku",
"license"
],
"properties": {
"sku": {
"type": "string",
"maxLength": 200,
"minLength": 1,
"description": "A sku from search or fetch."
},
"license": {
"enum": [
"internal",
"embedded",
"redistribution"
],
"type": "string",
"description": "Licence tier. Agents can quote internal and embedded; redistribution is handled on the Mogean store or by Mogean sales."
},
"geometry_add_on": {
"type": "boolean",
"description": "Add the building-geometry file where the product offers it; the quote prices it in."
}
},
"additionalProperties": false
},
"maxItems": 20,
"minItems": 1,
"description": "Catalog products to price together, each with its licence tier; the result totals them (send items or cut, not both)."
},
"license": {
"enum": [
"internal",
"embedded",
"redistribution"
],
"type": "string",
"description": "With cut: the licence tier to price the cut at."
},
"intended_use": {
"type": "object",
"required": [
"purpose"
],
"properties": {
"note": {
"type": "string",
"maxLength": 200,
"description": "Free text; not stored or repeated."
},
"purpose": {
"enum": [
"internal_analysis",
"site_selection",
"share_within_organization",
"embed_in_product",
"display_records_to_end_users",
"resell_or_redistribute",
"ai_training",
"rag_or_embeddings",
"agent_use",
"other"
],
"type": "string"
}
},
"description": "Optional: what the data is for. It never changes the price; where licence guidance is available the result names the licence tier that use needs.",
"additionalProperties": false
},
"full_cut_hash": {
"type": "string",
"pattern": "^[0-9a-f]{64}$",
"description": "With cut: the full_cut_hash mogean_count returned for this exact cut."
},
"response_format": {
"enum": [
"concise",
"detailed"
],
"type": "string",
"default": "concise",
"description": "concise (default) returns a short summary; detailed adds the full structured result as text."
}
},
"additionalProperties": false
}{
"type": "object",
"required": [
"tool",
"status",
"response_format",
"message"
],
"properties": {
"data": {
"type": "object",
"required": [
"mode",
"presentation"
],
"properties": {
"mode": {
"enum": [
"items",
"cut"
],
"type": "string"
},
"term": {
"type": "string",
"const": "one_time"
},
"lines": {
"type": "array",
"items": {
"type": "object",
"required": [
"index",
"kind",
"sku",
"license",
"geometry_add_on",
"term",
"price_cents",
"price_usd"
],
"properties": {
"cut": {
"type": "object"
},
"sku": {
"type": "string"
},
"kind": {
"type": "string"
},
"rows": {
"type": "integer",
"minimum": 0,
"description": "Cut lines: the rows the cut's files contain."
},
"term": {
"type": "string",
"const": "one_time"
},
"index": {
"type": "integer",
"minimum": 0
},
"title": {
"type": "string"
},
"license": {
"enum": [
"internal",
"embedded"
],
"type": "string"
},
"cut_hash": {
"type": "string"
},
"page_url": {
"type": "string"
},
"price_usd": {
"type": "number",
"minimum": 0
},
"product_id": {
"type": "string"
},
"price_cents": {
"type": "integer",
"minimum": 0
},
"priced_rows": {
"type": "integer",
"minimum": 0,
"description": "Cut lines: the rows the per-row formula prices. Lower than rows when a brand-only cut includes in-store department rows, which ship at no charge. When published_price_applied is true, the price is the published product price instead."
},
"full_cut_hash": {
"type": "string",
"pattern": "^[0-9a-f]{64}$"
},
"geometry_add_on": {
"type": "boolean"
},
"published_price_applied": {
"type": "boolean"
}
},
"additionalProperties": false
}
},
"reason": {
"enum": [
"not_found",
"flagship_contact_sales",
"redistribution_contact_sales",
"geometry_redistribution",
"subscription_not_available_via_mcp",
"geometry_unavailable",
"oversized",
"needs_serving_layer",
"format_not_available",
"empty_cut",
"oversized_spec",
"zero_rows",
"cut_not_sellable",
"above_mcp_cap"
],
"type": "string"
},
"currency": {
"type": "string",
"const": "usd"
},
"quote_id": {
"type": "string",
"pattern": "^q_[A-Za-z0-9_-]{22}$"
},
"refusals": {
"type": "array",
"items": {
"type": "object",
"required": [
"index",
"reason",
"message"
],
"properties": {
"sku": {
"type": [
"string",
"null"
]
},
"index": {
"type": [
"integer",
"null"
]
},
"reason": {
"enum": [
"not_found",
"flagship_contact_sales",
"redistribution_contact_sales",
"geometry_redistribution",
"subscription_not_available_via_mcp",
"geometry_unavailable",
"oversized",
"needs_serving_layer",
"format_not_available",
"empty_cut",
"oversized_spec",
"zero_rows",
"cut_not_sellable",
"above_mcp_cap"
],
"type": "string"
},
"contact": {
"type": "string"
},
"message": {
"type": "string"
},
"flagship": {
"type": "object",
"required": [
"page_url",
"price_usd_per_year"
],
"properties": {
"page_url": {
"type": "string"
},
"price_usd_per_year": {
"type": "number",
"minimum": 0
}
},
"additionalProperties": false
},
"page_url": {
"type": "string"
},
"product_id": {
"type": "string"
},
"store_next_steps": {
"type": "object",
"required": [
"where",
"what",
"price",
"steps",
"agent_can_complete",
"relay"
],
"properties": {
"what": {
"type": "string"
},
"price": {
"anyOf": [
{
"type": "object",
"required": [
"amount_usd",
"term",
"license",
"geometry_add_on"
],
"properties": {
"term": {
"enum": [
"one_time",
"subscription"
],
"type": "string"
},
"license": {
"enum": [
"internal",
"embedded",
"redistribution"
],
"type": "string"
},
"amount_usd": {
"type": "number",
"minimum": 0
},
"geometry_add_on": {
"type": "boolean"
}
},
"additionalProperties": false
},
{
"type": "null"
}
]
},
"relay": {
"type": "string"
},
"steps": {
"type": "array",
"items": {
"type": "string"
},
"minItems": 1
},
"where": {
"type": "string"
},
"contact": {
"type": "string"
},
"products": {
"type": "array",
"items": {
"type": "object",
"required": [
"product_id",
"title",
"page_url",
"term",
"license",
"geometry_add_on",
"price_usd"
],
"properties": {
"term": {
"enum": [
"one_time",
"subscription"
],
"type": "string"
},
"title": {
"type": "string"
},
"license": {
"enum": [
"internal",
"embedded",
"redistribution"
],
"type": "string"
},
"page_url": {
"type": "string"
},
"price_usd": {
"anyOf": [
{
"type": "number",
"minimum": 0
},
{
"type": "null"
}
]
},
"product_id": {
"type": "string"
},
"geometry_add_on": {
"type": "boolean"
}
},
"additionalProperties": false
},
"minItems": 2
},
"total_usd": {
"type": "number",
"minimum": 0
},
"send_to_sales": {
"type": "object",
"required": [
"cut",
"full_cut_hash",
"license",
"term"
],
"properties": {
"cut": {
"type": "object"
},
"term": {
"enum": [
"one_time",
"subscription"
],
"type": "string"
},
"license": {
"enum": [
"internal",
"embedded",
"redistribution"
],
"type": "string"
},
"full_cut_hash": {
"type": "string",
"pattern": "^[0-9a-f]{64}$"
}
},
"description": "For a custom cut Mogean sales handles: what the buyer sends them, the cut, in the same shape as the cut input, and its full_cut_hash, and the licence and term asked for.",
"additionalProperties": false
},
"agent_can_complete": {
"type": "boolean",
"const": false
}
},
"description": "What the buyer does on the Mogean store to complete this; an agent cannot. Relay `relay` and the ordered `steps` with the `where` link.",
"additionalProperties": false
}
},
"additionalProperties": false
}
},
"total_usd": {
"type": "number",
"minimum": 0
},
"expires_at": {
"type": "string"
},
"licence_fit": {
"type": "object",
"required": [
"purpose",
"determination",
"required_tier",
"covered_by_quoted_licences",
"dla_sections",
"license_version",
"message"
],
"properties": {
"message": {
"type": "string"
},
"purpose": {
"type": "string"
},
"dla_sections": {
"type": "array",
"items": {
"type": "string"
}
},
"determination": {
"enum": [
"tier",
"add_on_required",
"pending_counsel",
"contact_sales"
],
"type": "string"
},
"required_tier": {
"type": [
"string",
"null"
]
},
"license_version": {
"type": "string"
},
"covered_by_quoted_licences": {
"type": [
"boolean",
"null"
]
}
},
"additionalProperties": false
},
"license_url": {
"type": "string"
},
"total_cents": {
"type": "integer",
"minimum": 0
},
"ttl_seconds": {
"type": "integer",
"minimum": 0
},
"invoice_note": {
"type": "string",
"description": "Present only when the quote is $5,000 or more and fits one agent cart: the invoice alternative to card, as the cart carries it."
},
"presentation": {
"enum": [
"commerce",
"informational"
],
"type": "string"
},
"payment_terms": {
"type": "object",
"required": [
"card",
"invoice_eligible",
"note"
],
"properties": {
"card": {
"type": "boolean"
},
"note": {
"type": "string"
},
"invoice_eligible": {
"type": "boolean"
}
},
"additionalProperties": false
},
"license_version": {
"type": "string"
},
"cart_eligibility": {
"type": "object",
"required": [
"eligible",
"reasons",
"max_cart_lines"
],
"properties": {
"reasons": {
"type": "array",
"items": {
"enum": [
"above_cart_total_cap",
"too_many_cart_lines"
],
"type": "string"
}
},
"eligible": {
"type": "boolean"
},
"max_cart_lines": {
"type": "integer",
"minimum": 1
},
"max_cart_total_usd": {
"type": "number",
"minimum": 0
}
},
"description": "Whether this quote fits the fixed limits of one agent cart: at most max_cart_lines lines and, when max_cart_total_usd is present, at most that total (no total limit when it is absent). A quote above either never can. eligible: true is not a promise: creating the cart makes the final check, which also counts any monthly limit on the account and the lines of any other quotes in the same cart.",
"additionalProperties": false
},
"license_content_hash": {
"type": "string"
},
"pricing_config_version": {
"type": "string"
}
},
"additionalProperties": false
},
"tool": {
"type": "string",
"const": "mogean_quote"
},
"limit": {
"type": "object",
"required": [
"scope",
"limit",
"window_seconds",
"reset_at",
"retry_after_seconds"
],
"properties": {
"limit": {
"type": "integer",
"minimum": 0
},
"scope": {
"type": "string"
},
"reset_at": {
"type": [
"string",
"null"
]
},
"window_seconds": {
"type": "integer",
"minimum": 0
},
"retry_after_seconds": {
"type": [
"integer",
"null"
],
"minimum": 0
}
},
"additionalProperties": false
},
"errors": {
"type": "array",
"items": {
"type": "object",
"required": [
"field",
"code",
"message"
],
"properties": {
"code": {
"type": "string"
},
"field": {
"type": "string"
},
"message": {
"type": "string"
}
},
"additionalProperties": false
},
"maxItems": 20
},
"status": {
"enum": [
"ok",
"not_available",
"invalid_input",
"internal_error",
"rate_limited",
"refused"
],
"type": "string"
},
"message": {
"type": "string"
},
"drop_date": {
"type": "string"
},
"permalink": {
"type": "string"
},
"attribution": {
"type": "object"
},
"response_format": {
"enum": [
"concise",
"detailed"
],
"type": "string"
},
"manifest_version": {
"type": "string"
}
},
"additionalProperties": false
}{
"title": "Quote a price",
"readOnlyHint": true,
"openWorldHint": false,
"idempotentHint": false,
"destructiveHint": false
}mogean_catalog_info — Catalog overview
Describe the catalog: the current data release and how fresh it is, sellable totals, the provenance tiers, what each kind of product contains, and the limits and tools that apply to this connection.
{
"type": "object",
"properties": {
"response_format": {
"enum": [
"concise",
"detailed"
],
"type": "string",
"default": "concise",
"description": "concise (default) returns a short summary; detailed adds the full structured result as text."
}
},
"additionalProperties": false
}{
"type": "object",
"required": [
"tool",
"status",
"response_format",
"message"
],
"properties": {
"data": {
"type": "object",
"required": [
"release",
"totals",
"tier_composition",
"tiers",
"product_kinds",
"freshness",
"hosts",
"limits",
"resources"
],
"properties": {
"hosts": {
"type": "object"
},
"tiers": {
"type": "object"
},
"limits": {
"type": "object"
},
"totals": {
"type": "object"
},
"release": {
"type": "object"
},
"freshness": {
"type": "object"
},
"resources": {
"type": "array",
"items": {
"type": "string"
}
},
"product_kinds": {
"type": "array"
},
"tier_composition": {
"type": "object"
}
},
"additionalProperties": false
},
"tool": {
"type": "string",
"const": "mogean_catalog_info"
},
"limit": {
"type": "object",
"required": [
"scope",
"limit",
"window_seconds",
"reset_at",
"retry_after_seconds"
],
"properties": {
"limit": {
"type": "integer",
"minimum": 0
},
"scope": {
"type": "string"
},
"reset_at": {
"type": [
"string",
"null"
]
},
"window_seconds": {
"type": "integer",
"minimum": 0
},
"retry_after_seconds": {
"type": [
"integer",
"null"
],
"minimum": 0
}
},
"additionalProperties": false
},
"errors": {
"type": "array",
"items": {
"type": "object",
"required": [
"field",
"code",
"message"
],
"properties": {
"code": {
"type": "string"
},
"field": {
"type": "string"
},
"message": {
"type": "string"
}
},
"additionalProperties": false
},
"maxItems": 20
},
"status": {
"enum": [
"ok",
"not_available",
"invalid_input",
"internal_error",
"rate_limited"
],
"type": "string"
},
"message": {
"type": "string"
},
"drop_date": {
"type": "string"
},
"permalink": {
"type": "string"
},
"attribution": {
"type": "object"
},
"response_format": {
"enum": [
"concise",
"detailed"
],
"type": "string"
},
"manifest_version": {
"type": "string"
}
},
"additionalProperties": false
}{
"title": "Catalog overview",
"readOnlyHint": true,
"openWorldHint": false,
"idempotentHint": true,
"destructiveHint": false
}Prompts
Not advertised
Resources
8 advertised
catalog-current — Current catalog release
The data release the store serves now: manifest version, drop date, sellable totals and an as-of sentence.
mogean://catalog/currentschema — Data schema
The columns every delivered file carries, with types, examples, national fill rates and loading guides.
mogean://schemapricing — Pricing
The published pricing formula, licence multipliers, what agents can and cannot buy, and payment terms.
mogean://pricingfreshness — Freshness
The current release, the drop calendar, the freshness policy and what each provenance tier is.
mogean://freshnesslegal-license — Data License Agreement
The Data License Agreement every purchase is made under, with its version and SHA-256 content hash.
mogean://legal/licenselegal-terms — Terms of Service
The store's Terms of Service, with its version and SHA-256 content hash.
mogean://legal/termslegal-notice — Sources and licences
The third-party sources Mogean data can contain and their licences (Apache-2.0, CDLA-Permissive-2.0, ODbL-1.0, ODC-By-1.0).
mogean://legal/noticetool-guide — Tool guide
The tools on this connection, their limits and the result format.
mogean://tool-guide30-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
- 1256 ms
- 95th percentile latency
- 1256 ms
Maintenance history
Public check and source-refresh events. Editorial and ownership records remain private.
- · probe · passed · 1256 ms · metadata changed · 6 tool(s), 8 resource(s), 0 resource template(s)
Connect from your client
Each snippet registers the same endpoint; pick the client you use.
Claude Code
claude mcp add --transport http mogean-poi-data-store-mcp https://store.mogean.com/mcpCodex
codex mcp add mogean-poi-data-store-mcp --url https://store.mogean.com/mcpCursor
{
"mcpServers": {
"mogean-poi-data-store-mcp": {
"url": "https://store.mogean.com/mcp"
}
}
}Cline
{
"mcpServers": {
"mogean-poi-data-store-mcp": {
"type": "streamableHttp",
"url": "https://store.mogean.com/mcp",
"disabled": false
}
}
}VS Code
{
"servers": {
"mogean-poi-data-store-mcp": {
"type": "http",
"url": "https://store.mogean.com/mcp"
}
}
}Gemini CLI
gemini mcp add --transport http mogean-poi-data-store-mcp https://store.mogean.com/mcpClaude Desktop
{
"mcpServers": {
"mogean-poi-data-store-mcp": {
"url": "https://store.mogean.com/mcp"
}
}
}Windsurf
{
"mcpServers": {
"mogean-poi-data-store-mcp": {
"serverUrl": "https://store.mogean.com/mcp"
}
}
}Let your agent find its tools
Find servers like Mogean POI Data Store MCP from your agent. Add Koskamo once to search the index for endpoints, access requirements, and client setup. Public discovery needs no key.
Other data and analytics servers
Do you run Mogean POI Data Store 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.