Skip to main content
Glama

EPK Properties Public Knowledge MCP

Server Details

Public EPK real estate listings and multilingual guides for Panama and the Dominican Republic.

If you are the author of this connector, you can claim ownership with GitHub, an HTTP challenge, or a DNS record. Claimed connector authors can inspect health checks, view analytics, and manage their listing.
Status
Healthy
Last Tested
Transport
Streamable HTTP
URL

Available Tools

6 tools
fetchFetch EPK public documentA
Read-onlyIdempotent
Inspect

Use this when the user wants the full public property or guide document identified by a stable public EPK document ID or a prior search result.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesStable public EPK document ID supplied by the user or returned by search.

Output Schema

ParametersJSON Schema
NameRequiredDescription
idYes
urlYes
textYes
titleYes

TDQS

A3.9/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false, so the safety profile is covered. The description adds that the document is public and full, which is mildly useful context, but provides no additional behavioral detail such as error behavior, availability, or response characteristics.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single front-loaded sentence that immediately states the usage condition, the resource type, and the identifier source. Every phrase contributes meaning and there is no redundant filler.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple fetch-by-ID tool with one fully documented parameter, complete annotations, and an output schema present, the description covers what the tool does, when to use it, and what identifier to pass. Nothing essential is missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The input schema provides 100% coverage for the single 'id' parameter, including its source (user or search) and stability. The description essentially restates this provenance rather than adding new parameter-level meaning, so the baseline score of 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific action (fetch the full public property or guide document) and identifies the resource by a stable EPK document ID or prior search result. It is clear enough to distinguish from search tools, though it does not explicitly name sibling alternatives like get_guide_section or get_property.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The phrase 'Use this when the user wants the full public property or guide document' gives clear conditions for invocation. It does not explicitly mention when not to use it or which sibling alternatives to choose, so it stops short of full guidance.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_guide_sectionGet public guide sectionA
Read-onlyIdempotent
Inspect

Use this when the user supplies a public EPK guide section ID or wants the complete section identified by search_guides.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesStable public guide section ID supplied by the user or returned by search_guides.

Output Schema

ParametersJSON Schema
NameRequiredDescription
idYes
urlYes
kindYes
textYes
titleYes
countryYes
sectionYes
sourcesYes
summaryYes
languageYes
metadataNo
image_urlYes
countryNameYes

TDQS

A4.3/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnly, idempotent, and non-destructive. The description adds that the resource is public (no auth implied) and that the tool returns the complete section as opposed to a summary or snippet. This is useful context beyond the annotation flags.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is one sentence that front-loads the usage condition and the source of the ID. Every clause earns its place; there is no filler, redundancy, or unnecessary detail.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a single-parameter, read-only retrieval tool with a complete input schema, explicit annotations, and an output schema present, the description provides sufficient context: when to call it, what it returns, and where the ID comes from. Nothing an agent needs to invoke it correctly is missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The schema already documents the single parameter fully (pattern, type, description) at 100% coverage, so the baseline is 3. The tool description reiterates that the ID is public and comes from the user or search_guides but does not add meaning beyond the schema's parameter description.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The title 'Get public guide section' names the verb and resource, and the description clarifies that it returns 'the complete section' for a given ID. It also distinguishes itself from search_guides by framing the ID as something search_guides returns, so an agent can tell it apart from the search sibling.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description explicitly opens with 'Use this when the user supplies a public EPK guide section ID or wants the complete section identified by search_guides,' providing a clear trigger condition. It does not enumerate when-not-to-use or other alternatives, but the search_guides reference implies the division of labor.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_propertyGet public propertyA
Read-onlyIdempotent
Inspect

Use this when the user supplies a public EPK property UUID or wants full public details for a result returned by search_properties.

ParametersJSON Schema
NameRequiredDescriptionDefault
languageNoes
property_idYesStable public property UUID supplied by the user or returned by search_properties.

Output Schema

ParametersJSON Schema
NameRequiredDescription
idYes
urlYes
textYes
titleYes
metadataNo

TDQS

A4.6/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false, so the safety profile is well-known. The description adds useful behavioral context by clarifying the input source (user-supplied UUID or output from search_properties) and indicates the tool returns full public details. It does not mention edge cases like invalid UUIDs or language default behavior, but it adds genuine value beyond the annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single concise sentence with no wasted words, front-loading the trigger condition ('Use this when...') and the resource type. Every part earns its place, and it doesn't restate the field schema or annotations.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given this is a simple read-only lookup with rich annotations (readOnly, idempotent, non-destructive) and a clear output schema exists, the description covers the key usage context: when to call it and what input to pass. Minor gaps such as the absence of the output format explanations are covered by the output schema, so overall the context is complete enough. A small deduction for not explicitly mentioning that the language parameter defaults to Spanish in the description, but this is in the schema.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 50%: property_id has a description, but language's enum and default are structured only. The description adds context that property_id is a 'public EPK property UUID' supplied by the user or search_properties output, reinforcing the schema. Language parameter meaning is implicit but not problematic given the enum/default; the description doesn't repeat structured details and adds a bit of extra context.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb with resource and context: 'get public property' when the user supplies a UUID or wants full public details for a search result. It also clearly distinguishes from sibling search_properties by saying this tool is for full public details for results returned by that search. The purpose is unambiguous and clearly related to the title.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description explicitly says 'Use this when the user supplies a public EPK property UUID or wants full public details for a result returned by search_properties.' This provides concrete when-to-use guidance and implies the alternative (search_properties) is not the right tool when you already have a UUID. It is clear and actionable, even without an explicit when-not-to-use clause.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

search_guidesSearch public real estate guidesA
Read-onlyIdempotent
Inspect

Use this when the user asks only for EPK public guidance about buying, taxation, regulations, residency, locations, rental management, relocation, or due diligence in Panama or the Dominican Republic. If the same request also asks for properties, use search instead so both kinds appear together.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNo
queryYesTopic, regulation, tax, residency, location, or buying-process query.
offsetNo
countryNo
languageNoOmit to infer the language from the query.

Output Schema

ParametersJSON Schema
NameRequiredDescription
limitYes
totalYes
offsetYes
resultsYes
has_moreYes

TDQS

A4.6/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The annotations already declare readOnlyHint=true, destructiveHint=false, and idempotentHint=true, covering safety traits. The description adds behavioral context by specifying the content scope (guides only, not properties) and that using 'search' merges both kinds, which is useful beyond annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is two sentences, front-loaded with the purpose and alternative usage. Every word earns its place; it is concise and immediately actionable.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With an output schema present, return values need no explanation. The description covers use cases, distinctions, and topical scope. It is slightly incomplete in not mentioning language handling, but that is already covered in the schema. Overall, it is well-rounded for the tool's complexity.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The schema description coverage is 40%, so the description must compensate. It does so by enumerating query topics (buying, taxation, regulations, etc.) and geographic scope (Panama/Dominican Republic), giving meaning to the 'query' and 'country' parameters. It doesn't elaborate on limit/offset, but those are self-evident, and the schema provides defaults.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description explicitly states the tool searches for public real estate guides on specific topics in Panama or the Dominican Republic. It uses a clear verb+resource combination and distinguishes itself from the sibling tool 'search' by clarifying that properties are excluded unless requested together.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides explicit when-to-use guidance: 'Use this when the user asks only for EPK public guidance...' and an alternative: 'If the same request also asks for properties, use search instead'. This clearly delineates the boundary between search_guides and search.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

search_propertiesSearch public propertiesA
Read-onlyIdempotent
Inspect

Use this when the user wants only public EPK Properties listings with explicit country, sale/rent, property type, price, bedroom, bathroom, area, location, or descriptive-keyword filters. SALE and RENT searches also include SALE_AND_RENT listings because they are available for the requested operation. If the same request also asks for guides or regulations, use search instead so both kinds appear together.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNo
queryNoLocation, property name, address, or keywords matched against public listing text.
offsetNo
countryNoPTY for Panama or DOM for the Dominican Republic.
languageNoLanguage for descriptions and canonical listing URLs.es
max_areaNoMaximum area in square metres.
min_areaNoMinimum area in square metres.
max_priceNo
min_priceNo
max_bedroomsNoMaximum bedrooms; set equal to min_bedrooms for an exact bedroom count.
min_bedroomsNoMinimum number of bedrooms.
max_bathroomsNoMaximum bathrooms; set equal to min_bathrooms for an exact bathroom count.
min_bathroomsNoMinimum number of bathrooms.
property_typeNo
operation_typeNoSearch by availability: SALE includes SALE and SALE_AND_RENT listings; RENT includes RENT and SALE_AND_RENT listings.

Output Schema

ParametersJSON Schema
NameRequiredDescription
limitYes
totalYes
offsetYes
resultsYes
has_moreYes

TDQS

A4.3/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already cover the safety profile (readOnlyHint=true, idempotentHint=true, destructiveHint=false), so the description's job is to add context beyond that. It adds the public-only scope constraint (not present in the schema) and the non-obvious SALE_AND_RENT inclusion behavior. That behavior is partially redundant with the operation_type parameter description, but the description still adds genuine value over the annotations alone.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three sentences with the core purpose front-loaded; each sentence serves a distinct function: scoping the tool, disclosing inclusion behavior, and routing to the sibling. The SALE_AND_RENT sentence is slightly redundant with the operation_type schema description, which keeps this from a 5, but there is no wasted prose.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the output schema exists, annotations carry the safety profile, and the sibling set is large (five tools), the description covers the critical routing decisions (vs `search`), the scope boundary (public only), and a non-obvious result behavior. The main gap is that with 0 required parameters, the description never states what happens when no filters are supplied, and it doesn't clarify pagination behavior — minor gaps for a read-only, output-schema-backed search tool.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 67%, below the high-coverage baseline, so the description should compensate. It names the filter dimensions (price, property type, area, bedrooms, bathrooms) which loosely maps to the undocumented params (min_price, max_price, property_type), providing some compensation. However, it doesn't add detailed semantics beyond what the schema's own parameter descriptions already state, and pagination params (limit, offset) are not mentioned anywhere.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description opens with a specific action ('Use this when the user wants only public EPK Properties listings') naming both the verb and the exact resource scope, then enumerates the filter dimensions (country, sale/rent, property type, price, bedroom, bathroom, area, location, keywords). It differentiates from the sibling `search` tool directly in the final sentence, so an agent can distinguish them without opening either schema.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Provides an explicit when-to-use condition ('when the user wants only public EPK Properties listings with explicit... filters') and an explicit when-not-to-use with a named alternative ('If the same request also asks for guides or regulations, use search instead'). The SALE_AND_RENT inclusion note also prevents a class of incorrect calls where an agent assumes SALE returns only SALE listings.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections. Dates show when Glama detected each change.

  1. 4 tool updates
    • Changedfetch1 field changed
      • changedInput schema / properties / id / description
        Previous value: -"Document ID returned by search."New value: +"Stable public EPK document ID supplied by the user or returned by search."
    • Changedget_guide_section1 field changed
      • changedInput schema / properties / id / description
        Previous value: -"Guide section ID returned by search_guides."New value: +"Stable public guide section ID supplied by the user or returned by search_guides."
    • Changedget_property1 field changed
      • changedInput schema / properties / property_id / description
        Previous value: -"Public property UUID returned by search_properties."New value: +"Stable public property UUID supplied by the user or returned by search_properties."
    • Changedsearch_properties4 fields changed
      • changedInput schema / properties / operation_type / description
        Previous value: -"Search properties for sale or rent."New value: +"Search by availability: SALE includes SALE and SALE_AND_RENT listings; RENT includes RENT and SALE_AND_RENT listings."
      • changedInput schema / properties / query / description
        Previous value: -"Location, property name, address, or descriptive keywords."New value: +"Location, property name, address, or keywords matched against public listing text."
      • addedOutput schema / properties / results / items / properties / operation_type / description
        Added value: +"Published availability; SALE_AND_RENT satisfies either a sale or rent search."
      • addedOutput schema / properties / results / items / properties / operation_type / enum
        Added value: +[
        +  "SALE",
        +  "RENT",
        +  "SALE_AND_RENT"
        +]
  2. 1 tool update
    • Changedsearch_properties4 fields changed
      • addedInput schema / properties / max_bathrooms
        Added value: +{
        +  "description": "Maximum bathrooms; set equal to min_bathrooms for an exact bathroom count.",
        +  "minimum": 0,
        +  "type": "integer"
        +}
      • addedInput schema / properties / max_bedrooms
        Added value: +{
        +  "description": "Maximum bedrooms; set equal to min_bedrooms for an exact bedroom count.",
        +  "minimum": 0,
        +  "type": "integer"
        +}
      • addedInput schema / properties / min_bathrooms / description
        Added value: +"Minimum number of bathrooms."
      • addedInput schema / properties / min_bedrooms / description
        Added value: +"Minimum number of bedrooms."
  3. 3 tool updates
    • Changedfetch8 fields changed
      • removedOutput schema / properties / country
        Removed value: -{
        -  "enum": [
        -    "PTY",
        -    "DOM"
        -  ],
        -  "type": "string"
        -}
      • removedOutput schema / properties / countryName
        Removed value: -{
        -  "type": "string"
        -}
      • removedOutput schema / properties / kind
        Removed value: -{
        -  "const": "guide",
        -  "type": "string"
        -}
      • removedOutput schema / properties / language
        Removed value: -{
        -  "enum": [
        -    "es",
        -    "en",
        -    "it"
        -  ],
        -  "type": "string"
        -}
      • removedOutput schema / properties / metadata
        Removed value: -{
        -  "additionalProperties": {},
        -  "type": "object"
        -}
      • removedOutput schema / properties / section
        Removed value: -{
        -  "type": "string"
        -}
      • removedOutput schema / properties / sources
        Removed value: -{
        -  "items": {
        -    "additionalProperties": false,
        -    "properties": {
        -      "label": {
        -        "type": "string"
        -      },
        -      "url": {
        -        "format": "uri",
        -        "type": "string"
        -      }
        -    },
        -    "required": [
        -      "label",
        -      "url"
        -    ],
        -    "type": "object"
        -  },
        -  "type": "array"
        -}
      • removedOutput schema / properties / summary
        Removed value: -{
        -  "type": "string"
        -}
    • Changedget_guide_section2 fields changed
      • addedOutput schema / properties / image_url
        Added value: +{
        +  "format": "uri",
        +  "type": "string"
        +}
      • changedOutput schema / required
        Previous value: -[
        -  "id",
        -  "title",
        -  "url",
        -  "text",
        -  "kind",
        -  "country",
        -  "countryName",
        -  "language",
        -  "section",
        -  "summary",
        -  "sources"
        -]New value: +[
        +  "id",
        +  "title",
        +  "url",
        +  "text",
        +  "kind",
        +  "country",
        +  "countryName",
        +  "image_url",
        +  "language",
        +  "section",
        +  "summary",
        +  "sources"
        +]
    • Changedsearch_guides2 fields changed
      • addedOutput schema / properties / results / items / properties / image_url
        Added value: +{
        +  "format": "uri",
        +  "type": "string"
        +}
      • changedOutput schema / properties / results / items / required
        Previous value: -[
        -  "id",
        -  "title",
        -  "url",
        -  "text",
        -  "kind",
        -  "country",
        -  "countryName",
        -  "language",
        -  "section",
        -  "summary",
        -  "sources"
        -]New value: +[
        +  "id",
        +  "title",
        +  "url",
        +  "text",
        +  "kind",
        +  "country",
        +  "countryName",
        +  "image_url",
        +  "language",
        +  "section",
        +  "summary",
        +  "sources"
        +]
  4. 6 tool updates
    • First observedfetch
    • First observedget_guide_section
    • First observedget_property
    • First observedsearch
    • First observedsearch_guides
    • First observedsearch_properties

Frequently Asked Questions

Discussions

No comments yet. Be the first to start the discussion!

Related MCP Connectors

Related MCP Servers

  • A
    license
    A
    quality
    C
    maintenance
    Philippine real estate data for AI agents — search verified listings, calculate transfer costs, and get accurate legal information via lupaph.com.
    6
    55
    MIT
  • A
    license
    Not graded
    quality
    A
    maintenance
    Remote Model Context Protocol server for finding authorized real-estate listings in Mexico. It provides public property search, details and contact options, plus OAuth-protected favorites and publishing tools.
    MIT
  • A
    license
    A
    quality
    B
    maintenance
    AI-native property MCP for Northern Cyprus (KKTC). Search live listings, get the price index, compare cities and districts, estimate rental yield, and look up KKTC title-deed (koçan) procedures — all sourced live from evlek.app.
    18
    MIT
  • A
    license
    A
    quality
    A
    maintenance
    Search vacation rental properties, check real-time availability, get canonical pricing quotes, and create direct bookings. Each property is its own node with live data. Supports staircase pricing, seasonal rates, and 11 languages.
    4
    13
    127
    2
    Apache 2.0
Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.

TDQS

A4.3/5.0
Disambiguation4/5

The search tools are clearly separated by scope (combined vs guides-only vs properties-only), and the getters are typed by resource. However, `fetch` overlaps conceptually with `get_property` and `get_guide_section` because it also retrieves full property or guide documents, relying on a different ID type to distinguish itself.

Naming Consistency4/5

Most tools follow a clear verb_noun pattern: search/search_guides/search_properties and get_guide_section/get_property. The single bare `fetch` breaks the pattern and uses a synonym for `get`, creating a minor but noticeable inconsistency.

Tool Count5/5

Six tools is a tight, well-scoped set for a public knowledge server covering properties and guides. Each tool serves a distinct query or retrieval need, and none feel redundant or out of place.

Completeness5/5

The set covers combined and filtered searching plus retrieval for property details, guide sections, and full public documents. For a read-only public knowledge domain, this is a complete lifecycle with no obvious dead ends.

Resources