Skip to main content
Glama

idealista-mcp

MCP server for Idealista messaging. Connects to a Chrome instance you run yourself via Chrome DevTools Protocol (CDP). No browser is launched automatically.

Requirements

  • Node.js >= 20

  • Google Chrome (or Chromium) installed

  • An Idealista account, already logged in inside the Chrome profile you launch

Related MCP server: parley

Start Chrome with remote debugging

You must close any existing Chrome instance before running these commands — if Chrome is already open, the debugging port will not be exposed.

macOS

/Applications/Google\ Chrome.app/Contents/MacOS/Google\ Chrome \
  --remote-debugging-port=9222 \
  --user-data-dir="$HOME/.config/chrome-idealista"

Linux

google-chrome \
  --remote-debugging-port=9222 \
  --user-data-dir="$HOME/.config/chrome-idealista"

Windows (PowerShell)

& "C:\Program Files\Google\Chrome\Application\chrome.exe" `
  --remote-debugging-port=9222 `
  --user-data-dir="$env:USERPROFILE\chrome-idealista"

Use a dedicated --user-data-dir so this profile is separate from your everyday Chrome. Log into Idealista inside this instance; the server reuses those cookies.

Install

This package is not published to npm. Install from source:

git clone https://github.com/0p3rador/idealista-mcp
cd idealista-mcp
npm install
npm run build
npm link

MCP client configuration

Option A — installed via npm link (recommended for development)

{
  "mcpServers": {
    "idealista": {
      "command": "idealista-mcp",
      "env": {
        "IDEALISTA_CDP_ENDPOINT": "http://localhost:9222"
      }
    }
  }
}

Option B — absolute path to the built file

{
  "mcpServers": {
    "idealista": {
      "command": "node",
      "args": ["/absolute/path/to/idealista-mcp/dist/index.js"],
      "env": {
        "IDEALISTA_CDP_ENDPOINT": "http://localhost:9222"
      }
    }
  }
}

Replace /absolute/path/to/idealista-mcp with the directory where you cloned the repo.

Environment variables

Variable

Default

Description

IDEALISTA_CDP_ENDPOINT

http://localhost:9222

Chrome DevTools Protocol endpoint

IDEALISTA_ORIGIN

https://www.idealista.com

Idealista domain (.com, .it, .pt). Must be a valid https: URL.

IDEALISTA_DRAFT_TTL_MS

300000

Draft expiry in ms (5 min). Must be positive.

IDEALISTA_PAGE_PAUSE_MS

1500

Pause between paginated list requests in ms. Must be positive.

Tools

Tool

Effect

Notes

check_session

Read — checks authentication status

Uses /menu-api, validates me.name

get_counters

Read — unread count + starred conversations

Lightweight alternative to listing

list_conversations

Read — first page of inbox

Returns hasPrevious/hasNext

list_pending

Read — conversations awaiting your reply

Paginates full inbox; respects max_age_days and limit

get_conversation

Read — recent messages, descending

Fetches N messages newest-first

draft_message

Read — creates an in-memory draft

Returns draft_id + last message for review

send_message

WRITE — sends a message

Requires confirmed: true and recipient_name matching the draft

capture_start

Read — begins XHR capture

Pass include_body: true for full response bodies

capture_stop

Read — returns captured requests

Stops capture; error if none was active

Sending a message: required flow

draft_message(conversation_id, text)
  → returns { draft_id, recipient_name, last_message, ... }

Review the draft and last_message carefully.

send_message(draft_id, confirmed: true, recipient_name: "<exact name from draft>")
  → returns { sent: true, messageId, conversationId }

send_message is the only tool that writes data. It requires confirmed: true and a recipient_name that matches the draft exactly — this guards against sending to the wrong person. Drafts expire after IDEALISTA_DRAFT_TTL_MS ms.

If send_message returns a network error, the message may or may not have been delivered. Do not retry automatically — check get_conversation first. If the draft is marked ambiguous, create a new one with draft_message only after confirming the original did not arrive.

Security notes

capture_start with include_body: true dumps third-party personal data (names, phone numbers, message content) into the model context. Do not share, log, or republish this output.

External message content is wrapped in <mensaje_externo_NONCE> tags with a per-call random nonce. This prevents prompt injection by making the closing tag unpredictable.

Limits and terms of service

This tool automates access to your own Idealista account. Automated access may conflict with Idealista's terms of service. Use it at a human pace, for your own account only.

mark-as-read is not implemented deliberately — the GET /messages call does not trigger server-side read marking, so reading a conversation via this server does not change its unread state.

Available Tools

10 tools
capture_startA

Inicia captura de XHR/Fetch a idealista.com. Usa capture_stop para obtener resultados.

ParametersJSON Schema
NameRequiredDescriptionDefault
include_bodyNoSi true, incluye resumen estructural del body de cada respuesta

TDQS

A3.7/5.0
Behavior2/5

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

There are no annotations, so the description carries the full burden of behavioral disclosure. It reveals that results are obtained via capture_stop, but it omits important behaviors such as whether starting a capture requires an active session, whether repeated calls overwrite prior captures, or whether network traffic is passively observed in the background. This is a stateful operation, and the description does not disclose its side effects.

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?

Two short sentences deliver the core action and the immediate next step with zero filler. The information is front-loaded and every word earns its place.

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

Completeness3/5

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

For a simple 1-parameter tool with no output schema, the description covers the essential workflow by naming capture_stop as the result retrieval mechanism. However, it leaves gaps around prerequisites (e.g., session/login status) and the lifecycle of the capture, which matter for an agent deciding whether to invoke this 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 100%, and the single parameter include_body has a clear description in the schema. The tool description adds no additional parameter context, 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.

Purpose5/5

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

The description states a specific verb ('Inicia captura'), a specific resource ('XHR/Fetch a idealista.com'), and clearly distinguishes the tool from capture_stop by positioning it as the starting half of a pair. An agent can immediately understand what this tool does and how it relates to its 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 directs the agent to use capture_stop to obtain results, which communicates the essential workflow for this start/stop pair. It lacks explicit conditions for when NOT to use the tool, but the context is clear enough for a paired capture workflow.

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

capture_stopA

Detiene la captura y devuelve el buffer. Error explícito si no hay captura activa.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A4.2/5.0
Behavior4/5

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

With no annotations provided, the description carries the full burden and does well: it discloses the stopping behavior, the returned buffer, and the explicit error when no capture is active. It could add more detail about side effects or buffer contents, but the core behavioral contract is clear.

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 extremely concise: two clauses, no filler, no repetition of the tool name, and the most important information (what it does and what it returns) is front-loaded.

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?

For a parameterless stop operation with no output schema, the description covers the essential context: action, result, and error condition. It does not explain what the buffer contains or the broader capture lifecycle, but that may be unnecessary given the simple contract.

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 tool has zero parameters, so parameter semantics are trivially fully covered by the empty schema. The description correctly focuses on behavior and return value rather than parameters, which is appropriate here.

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 clearly states the action ('Detiene la captura'), the resource ('captura'), and the observable result ('devuelve el buffer'). It also distinguishes itself from the sibling capture_start by being the opposite operation, so an agent can select it confidently.

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

Usage Guidelines3/5

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

Usage context is implied: this tool should be used to end a capture session started by capture_start. However, it does not explicitly mention capture_start as the alternative, nor does it state when not to use it, leaving the pairing to be inferred.

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

check_sessionA

Verifica si hay sesión activa. Usa /menu-api y valida body.me.name. Devuelve { authenticated, method, name? }.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A4.5/5.0
Behavior4/5

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

With no annotations provided, the description carries the transparency burden and does well: it names the endpoint (/menu-api), the validation path (body.me.name), and the exact return object. The word 'Verifica' and the boolean 'authenticated' imply a non-mutating check, though it could have been more explicit about side effects and failure behavior.

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?

Three short sentences deliver purpose, implementation mechanism, and return format with no wasted words. The most important information is front-loaded, and every sentence earns its place.

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 zero-parameter, no-output-schema tool, the description is complete: it tells the agent what the tool does, how it determines the result, and what it returns. An agent can select and invoke it correctly without additional documentation.

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 tool has zero parameters, so the input schema is empty and there is nothing to document. The description still adds relevant context by explaining the response validation path and the returned fields, which is more than the schema alone provides.

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 action ('Verifica si hay sesión activa') with a clear resource (active session) and is readily distinguishable from siblings like open_login, send_message, and capture_start. It also includes the exact validation mechanism (body.me.name) and return shape, leaving no ambiguity about what the tool does.

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 intended use is clear: call this tool when you need to know whether an active session exists. It does not explicitly name exclusion conditions or alternatives, but the purpose sentence is enough to route an agent correctly, especially next to open_login which handles the opposite concern.

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

draft_messageC

Crea borrador. Resuelve destinatario desde /detail. Devuelve último mensaje (más reciente) para contexto de aprobación.

ParametersJSON Schema
NameRequiredDescriptionDefault
textYes
conversation_idYes

TDQS

C2.9/5.0
Behavior3/5

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

With no annotations provided, the description carries the behavioral burden. It discloses that the tool creates a draft, resolves the recipient via /detail, and returns the most recent message for approval context. This is more informative than a generic 'create draft' statement, but it still omits side effects, permission requirements, and any failure or response details.

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?

The description is very short and front-loaded with the core action ('Crea borrador'), and each sentence adds information about recipient resolution or return behavior. It is appropriately concise, though the references to '/detail' and 'contexto de aprobación' are somewhat cryptic and could have been clarified without much extra length.

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

Completeness2/5

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

Given no annotations, no output schema, and 0% parameter coverage, this description is too sparse for an agent to confidently invoke the tool. It provides the core action and some interesting return behavior, but lacks parameter semantics, side-effect clarity, and enough detail about how the recipient resolution works.

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

Parameters2/5

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

Schema description coverage is 0%, so the description must compensate. It only indirectly suggests that conversation_id is used to resolve the recipient from /detail and that text is the draft content. Neither parameter is explicitly defined, and no format or expected values are given, leaving the agent to infer essential calling semantics.

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 opens with a specific verb and resource: 'Crea borrador' (create draft), which clearly identifies the action. It adds behavioral details about resolving the recipient from /detail and returning the latest message for approval context, giving a usable sense of what the tool does. It doesn't explicitly differentiate from send_message, but the draft-vs-send distinction is reasonably clear.

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

Usage Guidelines2/5

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

No explicit guidance is given about when to use this tool versus alternatives like send_message. The phrase 'para contexto de aprobación' hints at an approval-related use case, but it does not state conditions, exclusions, or when the agent should prefer a sibling tool.

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

get_conversationA

Obtiene los N mensajes más recientes de una conversación, en orden descendente (messages[0] = más reciente).

ParametersJSON Schema
NameRequiredDescriptionDefault
sizeNoNúmero de mensajes a devolver
conversation_idYes

TDQS

A3.8/5.0
Behavior3/5

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

No annotations are present, so the description carries the full behavioral burden. It does disclose the ordering behavior and that only the N most recent messages are returned. However, it does not mention error behavior, authentication, or explicitly confirm that the operation is read-only beyond the verb 'Obtiene'.

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 sentence with a parenthetical ordering clarification. Purpose is front-loaded and there is no filler. Every element contributes useful information.

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?

For a low-complexity getter with one required parameter and one optional parameter with a default, the description covers what is returned and the ordering. The explicit 'messages[0] = más reciente' hint mitigates the lack of an output schema. Minor gaps like empty-conversation behavior or size limits are not fatal for invocation.

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 50%: 'size' is described but 'conversation_id' is not. The description maps 'N' to the size parameter and 'una conversación' to conversation_id, adding mild semantic value. It does not provide ID format, constraints, or behavior when size exceeds available messages.

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 ('Obtiene'), the target resource ('los N mensajes más recientes de una conversación'), and the ordering. This clearly distinguishes it from sibling tools like list_conversations, which would list conversations rather than messages. It is not a tautology and provides concrete scope.

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

Usage Guidelines3/5

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

The description implies the tool is for reading recent messages of a single conversation, but it never explicitly says when to prefer it over alternatives or when not to use it. No exclusions or sibling comparisons are provided. Usage context is inferable from 'de una conversación' but is not made actionable.

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

get_countersA

Devuelve mensajes no leídos y conversaciones destacadas. Alternativa ligera a listar todo cuando no hay Socket.IO.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A3.9/5.0
Behavior3/5

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

No annotations are provided, so the description carries the burden of behavioral disclosure. It reveals that the tool provides unread counts and highlighted conversations, and that it is not a full listing. However, it does not explain what 'destacadas' means, whether the response is count-like or full objects, or any real-time/state implications.

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?

Two sentences, no filler. The primary purpose is front-loaded and the usage condition is stated directly. Every word earns its place.

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?

For a zero-parameter, read-only style tool, the description is mostly complete: it names the resource (unread messages and highlighted conversations) and gives the usage trigger (no Socket.IO). It lacks details on the exact response shape or semantics of 'destacadas', but these are not required to invoke it correctly.

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 tool has zero parameters and the schema coverage is 100%, so there are no parameter semantics to clarify. The description compensates by explaining what the tool returns, which is useful for an agent deciding to call it.

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 clearly states the tool's purpose: it returns unread messages and highlighted conversations. It also positions itself as a lightweight alternative to listing everything when Socket.IO is not available, which distinguishes it from list_conversations. However, it does not explicitly name the sibling tool it relates to.

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 conveys strong usage context by saying it is a lightweight alternative to listing everything when Socket.IO is not available. This implies when to use it versus list_conversations, though it does not explicitly mention when not to use it or name the alternative directly.

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

list_conversationsB

Primeras 20 conversaciones vía /conversations/list. Incluye hasPrevious/hasNext para saber si hay más páginas.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

B3.4/5.0
Behavior3/5

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

It discloses the 20-result limit and the presence of hasPrevious/hasNext pagination flags, which is useful behavioral information beyond the name. However, with no annotations provided, the description carries the full burden and still does not mention ordering, read-only behavior, authentication needs, or what fields each conversation contains.

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 sentence that front-loads the key behavior (first 20 conversations) and immediately notes the pagination flags. Every word earns its place with no redundancy.

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

Completeness3/5

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

For a zero-parameter listing tool, it covers the most important runtime facts: result cap and pagination existence. But because there is no output schema, the description leaves out conversation field details, ordering, and whether a valid session is required, which are relevant for an agent invoking this tool correctly.

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 input schema is empty, so parameter documentation is trivially complete. The description adds the only relevant call detail: that the endpoint returns at most 20 conversations and pagination flags.

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 clearly states that the tool lists the first 20 conversations and references the /conversations/list endpoint, which gives a specific resource and scope. However, it does not explicitly differentiate this tool from sibling list_pending, so it stops short of a 5.

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

Usage Guidelines2/5

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

The description gives no guidance on when to use this tool instead of alternatives such as list_pending or get_conversation. There is also no mention of prerequisites like having an active session, which siblings like open_login and check_session suggest may be relevant.

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

list_pendingA

Busca conversaciones pendientes de respuesta (último mensaje es del interlocutor, no mío). Páginas la lista completa con pausa de 1.5 s entre páginas. Devuelve entradas 'pending' y 'unknown' (fail-closed). AVISO: las entradas 'unknown' deben revisarse manualmente — nunca alimentar una respuesta automática sin verificar.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoNúmero máximo de entradas a devolver (entre pending + unknown)
max_age_daysNoIgnorar conversaciones cuyo último mensaje sea más antiguo que este número de días

TDQS

A4.2/5.0
Behavior5/5

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

With no annotations provided, the description carries the full burden, and it delivers: it discloses pagination with a 1.5s pause, reveals that both 'pending' and 'unknown' entries are returned (fail-closed), and explicitly warns that 'unknown' entries require manual review before any automatic response. This is strong, risk-relevant behavioral disclosure.

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 compact and front-loaded: purpose first, then pagination behavior, then output categories and a high-visibility warning. Every sentence earns its place, and the warning is highlighted appropriately without excessive length.

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?

For a list tool with no output schema, the description covers the essential context: what counts as pending, pagination behavior, category semantics, and a manual-review warning. It does not specify the shape of individual returned entries or authentication prerequisites, but those are less critical for a read-oriented listing operation and are partially implied by the sibling toolset.

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 100%, so the parameter meanings are already fully documented. The description adds no new parameter-level semantics; it only reinforces the existing schema explanations. Baseline 3 is appropriate because the schema does the heavy lifting.

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 clearly states the tool's purpose: it searches for conversations pending a response, and precisely defines 'pending' as the last message being from the other party rather than the user. This specific verb-plus-resource framing makes the tool's scope unmistakable and distinguishes it from the broader sibling list_conversations.

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

Usage Guidelines3/5

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

Usage is implied rather than explicit: the description implies you would call this tool when you need pending conversations, but it never names alternatives or states when NOT to use it. Given siblings like list_conversations, get_conversation, and get_counters, explicit routing guidance would have been valuable.

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

open_loginA

Abre la página de login de Idealista. Devuelve inmediatamente.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A3.8/5.0
Behavior3/5

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

With no annotations, the description carries the burden. It discloses that the tool returns immediately, a useful non-blocking trait. However, it does not mention side effects like navigation state change or prerequisites (e.g., whether a browser session must already exist), leaving some behavioral uncertainty.

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?

Two short sentences, front-loaded with the core action, no filler. Every word earns its place.

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?

For a zero-parameter, no-output-schema tool, the description is nearly complete. It provides the action and return behavior, though a note on side effects (e.g., navigating the current tab) would make it fully complete.

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 has zero parameters, so there is nothing to document. Baseline 4 applies to 0-parameter tools; the description correctly adds no parameter information.

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 uses a specific verb ('Abre') and resource ('página de login de Idealista'), clearly distinguishing it from the messaging and capture sibling tools. The purpose is unambiguous even without inspecting the schema.

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

Usage Guidelines2/5

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

There is no guidance on when to use this tool versus alternatives like check_session. The description states only what it does and that it returns immediately, leaving the agent to infer the appropriate invocation context.

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

send_messageA

Envía usando draft_id. El borrador se elimina SOLO tras éxito 200. En sesión caducada, el borrador sobrevive. AVISO: el servidor no deduplica — no reintentar si hay error de red ambiguo (puede duplicar).

ParametersJSON Schema
NameRequiredDescriptionDefault
draft_idYes
confirmedYes
recipient_nameYesNombre del destinatario tal como aparece en la conversación

TDQS

A3.8/5.0
Behavior5/5

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

Sin annotations, la descripción asume toda la carga de transparencia y lo hace muy bien. Revela efectos laterales importantes: el borrador se elimina solo tras un 200, sobrevive si la sesión caduca, y el servidor no deduplica, por lo que reintentar puede duplicar el envío. Este nivel de detalle sobre consecuencias y riesgos es ejemplar.

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?

La descripción es breve, con información densa y cada frase aporta un dato relevante. El verbo principal aparece al inicio y las advertencias críticas están claramente delimitadas. No hay relleno ni repetición de lo que ya está en el schema.

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?

Cubre de manera sólida el comportamiento y los riesgos de una operación de envío, incluyendo efectos secundarios y condiciones de error. No hay output schema, pero para invocar correctamente la herramienta la información es casi suficiente. La única carencia notable es que no documenta el significado del parámetro 'confirmed', que parece crítico para el envío.

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

Parameters2/5

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

La cobertura del schema es solo del 33% y la descripción no compensa esa carencia. Explica indirectamente que draft_id es el identificador del borrador a enviar, pero no aclara el significado de 'confirmed' ni cómo obtenerlo. No añade valor semántico más allá de lo que ya ofrece el nombre del parámetro.

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?

La descripción comienza con un verbo claro, 'Envía', e identifica el recurso principal ('usando draft_id'), indicando que la acción está ligada a un borrador. Aunque no menciona explícitamente la palabra 'mensaje', el nombre de la herramienta y el contexto con draft_message lo hacen suficientemente claro. No diferencia formalmente de siblings, pero el uso de draft_id lo distingue de draft_message.

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

Usage Guidelines3/5

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

La descripción implica que se debe usar cuando ya existe un draft_id y que se requiere una sesión válida, pero no lo dice explícitamente como una regla de uso. Incluye una guía clara de cuándo no reintentar ante errores de red ambiguos, lo que aporta orientación práctica. No menciona alternativas ni cuándo preferir otro tool.

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. 10 tool updatesv1.0.0
    • First observedcapture_start
    • First observedcapture_stop
    • First observedcheck_session
    • First observeddraft_message
    • First observedget_conversation
    • First observedget_counters
    • First observedlist_conversations
    • First observedlist_pending
    • First observedopen_login
    • First observedsend_message

TDQS

A3.7/5.0
Disambiguation5/5

Each tool targets a distinct resource or action: authentication (open_login, check_session), conversation summaries (get_counters), conversation listing (list_conversations, list_pending), message retrieval (get_conversation), and message flow (draft_message, send_message). The capture pair is clearly separate. No two tools appear to do the same thing.

Naming Consistency4/5

Most tool names follow a clean verb_noun pattern (draft_message, open_login, check_session, get_conversation, send_message). However, capture_start and capture_stop invert this pattern, using noun_verb instead of the expected start_capture/stop_capture, creating a minor inconsistency.

Tool Count5/5

At 10 tools, the set is well-scoped for a messaging/automation server. Each tool serves a clear purpose in the login→list→read→draft→send workflow, plus a debugging capture pair. Nothing feels redundant or unnecessary.

Completeness4/5

The core messaging lifecycle is well covered: authentication, session validation, conversation listing, message reading, draft creation, sending, and pending detection. Minor gaps remain such as no logout, no mark-as-read, and no way to manage or delete drafts, but agents can work around these.

Maintenance

ActivityMaintained
ResponsivenessNo issues

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

If you are the server author, to access and configure the admin panel.

Related MCP Connectors

Related MCP Servers

  • F
    license
    Not graded
    quality
    D
    maintenance
    Lets you control Meta apps (Facebook, Instagram, Threads) using your Chrome login session without API tokens, enabling actions like posting, messaging, and reading inbox locally.
    3
    -
  • A
    license
    Not graded
    quality
    B
    maintenance
    Enables token-efficient browser automation for AI chats like ChatGPT, Gemini, and Claude, allowing reading responses, sending messages, waiting for streaming replies, and bridging conversations between tabs via Chrome DevTools Protocol.
    4
    MIT
  • A
    license
    Not graded
    quality
    C
    maintenance
    Enables sending LinkedIn messages and invitations, reading conversations, and managing outreach through natural language by automating a real LinkedIn session via a Chrome extension.
    15
    MIT
  • F
    license
    Not graded
    quality
    B
    maintenance
    Enables reading charts, running morning briefs, developing Pine Scripts, and automating workflows on TradingView Desktop via Chrome DevTools Protocol.
    81
    -

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/0p3rador/ide4lista-mcp'

If you have feedback or need assistance with the MCP directory API, please join our Discord server