idealista-mcp
Click on "Install Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@idealista-mcpshow me conversations awaiting my reply"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
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 linkMCP 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 |
|
| Chrome DevTools Protocol endpoint |
|
| Idealista domain ( |
|
| Draft expiry in ms (5 min). Must be positive. |
|
| Pause between paginated list requests in ms. Must be positive. |
Tools
Tool | Effect | Notes |
| Read — checks authentication status | Uses |
| Read — unread count + starred conversations | Lightweight alternative to listing |
| Read — first page of inbox | Returns |
| Read — conversations awaiting your reply | Paginates full inbox; respects |
| Read — recent messages, descending | Fetches N messages newest-first |
| Read — creates an in-memory draft | Returns draft_id + last message for review |
| WRITE — sends a message | Requires |
| Read — begins XHR capture | Pass |
| 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 toolscapture_startA
Inicia captura de XHR/Fetch a idealista.com. Usa capture_stop para obtener resultados.
| Name | Required | Description | Default |
|---|---|---|---|
| include_body | No | Si true, incluye resumen estructural del body de cada respuesta |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
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.
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.
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.
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.
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.
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? }.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| text | Yes | ||
| conversation_id | Yes |
TDQS
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.
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.
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.
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.
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.
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).
| Name | Required | Description | Default |
|---|---|---|---|
| size | No | Número de mensajes a devolver | |
| conversation_id | Yes |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Número máximo de entradas a devolver (entre pending + unknown) | |
| max_age_days | No | Ignorar conversaciones cuyo último mensaje sea más antiguo que este número de días |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
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.
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.
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.
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.
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.
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).
| Name | Required | Description | Default |
|---|---|---|---|
| draft_id | Yes | ||
| confirmed | Yes | ||
| recipient_name | Yes | Nombre del destinatario tal como aparece en la conversación |
TDQS
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.
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.
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.
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.
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.
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.
10 tool updates
v1.0.0- First observed
capture_start - First observed
capture_stop - First observed
check_session - First observed
draft_message - First observed
get_conversation - First observed
get_counters - First observed
list_conversations - First observed
list_pending - First observed
open_login - First observed
send_message
TDQS
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.
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.
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.
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
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
Manage Gmail end-to-end: search, read, send, draft, label, and organize threads. Automate workflow…
Run LinkedIn outreach from your AI chat: find leads, launch campaigns, send, and reply.
WhatsApp CRM for AI agents: search contacts, read chats, manage the sales pipeline, send messages.
Messaging tools for AI agents: send messages, manage chats, groups and channels.
Related MCP Servers
- FlicenseNot gradedqualityDmaintenanceLets 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-
- AlicenseNot gradedqualityBmaintenanceEnables 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.4MIT
- AlicenseNot gradedqualityCmaintenanceEnables sending LinkedIn messages and invitations, reading conversations, and managing outreach through natural language by automating a real LinkedIn session via a Chrome extension.15MIT
- FlicenseNot gradedqualityBmaintenanceEnables reading charts, running morning briefs, developing Pine Scripts, and automating workflows on TradingView Desktop via Chrome DevTools Protocol.81-
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
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