Skip to main content
Glama
fjvalencian

Facebook Marketplace MCP

by fjvalencian

🛒 Facebook Marketplace MCP

Busca en Facebook Marketplace directamente desde Claude (Claude Code o Claude Desktop). Sin navegador: reutiliza tu sesión de Facebook ya iniciada en Chrome.

English · Español · Português

Instalar en Claude Desktop Añadir a Claude Code


⚠️ Léelo antes de instalar (transparencia y seguridad)

Este proyecto es de código abierto y queremos ser 100% transparentes sobre lo que hace:

  • 🍪 Lee las cookies de tu sesión de Facebook desde Chrome. Para hacerse pasar por ti ante Facebook, el servidor copia la base de datos de cookies de Chrome y la descifra usando la clave guardada en el Llavero (Keychain) de macOS. La primera vez, macOS te pedirá tu contraseña para autorizar ese acceso. Las cookies se usan solo en tu equipo, para hablar con facebook.com; no se envían a ningún tercero.

  • 📜 Automatizar Facebook viola sus Términos de Servicio. Facebook puede pedir CAPTCHAs, limitar o bloquear la cuenta que uses.

  • 🧑‍🔧 Recomendación fuerte: usa una cuenta secundaria de Facebook, NO tu cuenta principal. Crea una cuenta aparte (idealmente en un perfil de Chrome distinto) e inicia sesión ahí solo para esto. Así, si Facebook marca o bloquea la cuenta, no pierdes tu cuenta personal. Configura ese perfil con la variable CHROME_PROFILE (ver más abajo).

  • 🐢 Uso responsable. El servidor se auto-limita a pocas solicitudes por minuto para no llamar la atención. No subas ese límite de forma agresiva.

  • 🔍 Solo lectura. Busca y lee publicaciones; no publica, no envía mensajes, no modifica nada en tu cuenta.

Al usar este software aceptas estos riesgos bajo tu propia responsabilidad.


Related MCP server: Marketplace Finder MCP Server

🧠 ¿Cómo funciona? (en simple)

  1. Toma tu sesión: copia las cookies de Facebook desde Chrome y las descifra con la clave del Llavero de macOS.

  2. Consigue los tokens: abre facebook.com/marketplace/ (como una página normal) y extrae los tokens de seguridad (fb_dtsg, lsd, etc.) que Facebook exige.

  3. Habla el protocolo de Facebook: hace las mismas llamadas POST /api/graphql/ que hace el sitio web de Facebook, usando identificadores de consulta (doc_id) y tu sesión.

  4. Te devuelve resultados limpios: título, precio, ubicación, vendedor, fecha, foto y enlace de cada publicación.

Es la misma idea que pypush para iMessage: protocolo directo, sin navegador en tiempo de ejecución.


✅ Requisitos

  • macOS (la extracción de cookies usa el Llavero de Apple).

  • Google Chrome con una sesión de Facebook iniciada (idealmente una cuenta secundaria).

  • Para el método manual: Node.js 20 o superior (node --version). Instálalo desde nodejs.org o con brew install node. (La extensión .mcpb de Claude Desktop no necesita que instales Node.)


⚡ Instalación rápida

🖥️ Claude Desktop — un clic

  1. ⬇ Descarga la extensión .mcpb (botón de arriba).

  2. Doble clic en el archivo descargado (o arrástralo a Claude Desktop → menú ☰ → Settings → Extensions).

  3. Revisa los detalles y pulsa Install. Ajusta si quieres el perfil de Chrome y el límite de solicitudes.

  4. ¡Listo! Pídele a Claude que busque algo en Marketplace.

La extensión precompilada es para macOS con chip Apple Silicon (M1/M2/M3…). Si tienes un Mac Intel, usa el método manual (npm run build recompila el binario para tu equipo).

💻 Claude Code — un comando

git clone https://github.com/fjvalencian/marketplace-mcp.git && cd marketplace-mcp && npm install && npm run build
claude mcp add facebook-marketplace --scope user -- node "$(pwd)/dist/index.js"

Detalle paso a paso más abajo. 👇


🐣 Guía paso a paso "para dummies"

Sigue esto tal cual, línea por línea. No necesitas saber programar.

1) Abre la Terminal

En Spotlight (⌘ + Espacio) escribe "Terminal" y ábrela.

2) Descarga el proyecto

Copia y pega estos comandos, uno a uno, y presiona Enter después de cada uno:

git clone https://github.com/fjvalencian/marketplace-mcp.git
cd marketplace-mcp
npm install
npm run build

Si todo salió bien, se creó una carpeta dist/ con el servidor compilado.

3) Averigua la ruta completa del proyecto

Ejecuta pwd y copia lo que aparece (por ejemplo /Users/tunombre/marketplace-mcp). La ruta al servidor será eso + /dist/index.js.

4) Inicia sesión en Facebook (cuenta secundaria) en Chrome

Abre Google Chrome e inicia sesión en la cuenta de Facebook que vas a usar. Déjala con sesión abierta.

5) Conéctalo a Claude

Sigue Instalar en Claude Code o Instalar en Claude Desktop. Reinicia la app después.

6) Pruébalo

Escríbele a Claude: "Busca un BMW E30 en Santiago de Chile, entre 2 y 8 millones, ordenado por precio."

La primera vez, macOS mostrará una ventana pidiendo tu contraseña para acceder al Llavero ("Chrome Safe Storage"). Escríbela y dale Permitir siempre. ¡Listo!


💻 Instalar en Claude Code

Ejecuta esto reemplazando la ruta por la tuya (paso 3):

claude mcp add facebook-marketplace --scope user -- node /RUTA/COMPLETA/marketplace-mcp/dist/index.js

Verifica que quedó conectado:

claude mcp list

Debe aparecer facebook-marketplace ... ✔ Connected. Reinicia Claude Code para que las herramientas estén disponibles.


🖥️ Instalar en Claude Desktop

Opción A — Extensión .mcpb (recomendada, un clic)

Ver Instalación rápida arriba.

Opción B — Configuración manual

  1. Abre (o crea) el archivo de configuración de Claude Desktop en macOS:

    open -e ~/Library/Application\ Support/Claude/claude_desktop_config.json
  2. Agrega el bloque "facebook-marketplace" (reemplaza la ruta por la tuya del paso 3):

    {
      "mcpServers": {
        "facebook-marketplace": {
          "command": "node",
          "args": ["/RUTA/COMPLETA/marketplace-mcp/dist/index.js"],
          "env": { "CHROME_PROFILE": "Default" }
        }
      }
    }
  3. Guarda y cierra y vuelve a abrir Claude Desktop por completo.


🔁 Rutinas y búsquedas rápidas

¿Quieres un "botón" que abra Claude Desktop y lance una búsqueda al instante? Usa los enlaces claude://. Al hacer clic, se abre Claude Desktop con el mensaje ya escrito (necesitas la extensión instalada).

📌 Reemplaza el prompt por lo que busques. Ejemplos listos (haz clic):

Para crear tu propio botón, arma un enlace así (codifica el texto para URL):

claude://claude.ai/new?q=TU_BUSQUEDA_AQUI

Convertirlo en una rutina recurrente (que corra sola)

No existe un enlace que cree la rutina automáticamente, pero configurarla toma 30 segundos:

  1. En Claude Desktop abre la barra lateral → RoutinesNew routine.

  2. Pega un prompt como: "Revisa facebook-marketplace por BMW E30 nuevos en Santiago bajo 8 millones y resúmelos."

  3. Elige la frecuencia (diaria, semanal…) y guarda.

💡 Alternativa dentro del propio MCP: usa monitor_search para guardar una búsqueda y check_monitors para ver solo lo nuevo desde la última vez. Perfecto para combinar con una rutina.


🛠️ Herramientas disponibles

search_listings

Busca publicaciones por texto, ubicación y filtros.

Parámetro

Tipo

Requerido

Descripción

query

string

Texto a buscar (ej: "BMW E30")

latitude

number

Latitud del centro de búsqueda

longitude

number

Longitud del centro de búsqueda

radius_km

number

no

Radio en km (por defecto: 50)

min_price

number

no

Precio mínimo, en pesos/dólares (la unidad de la moneda)

max_price

number

no

Precio máximo, en pesos/dólares

condition

string[]

no

Estado: new, used_like_new, used_good, used_fair

days_since_listed

number

no

Solo publicaciones de los últimos N días

sort_by

string

no

best_match (def.), price_asc, price_desc, date_desc

category

string

no

ID de categoría

cursor

string

no

Cursor para traer la página siguiente (paginación)

limit

number

no

Máximo de resultados (por defecto: 20)

💰 Sobre los precios: escribe min_price/max_price en la unidad normal de la moneda (ej. 2000000 para 2 millones de pesos). El servidor hace la conversión que Facebook espera internamente. Muchos vendedores ponen precios falsos ($0, $123, $12.345.678); esos aparecen marcados con ⚠️ precio dudoso.

get_listing

Devuelve datos de una publicación por su listing_id. Nota: Facebook no expone la descripción completa de un aviso vía API sin navegador, así que esta herramienta puede devolver solo el enlace directo para abrirlo. La búsqueda ya entrega título, precio, ubicación, vendedor y foto.

search_location

Convierte el nombre de una ciudad/comuna en coordenadas para usar en search_listings. Parámetro: query (ej: "Santiago, Chile", "Providencia").

Monitores (seguimiento de búsquedas)

  • monitor_search — guarda una búsqueda como monitor.

  • check_monitors — revisa si hay publicaciones nuevas desde la última vez.

  • list_monitors — lista los monitores guardados.

  • delete_monitor — elimina un monitor.


💬 Ejemplos de uso (lenguaje natural en Claude)

  • "Busca un BMW E30 en Santiago de Chile, entre 2 y 8 millones, ordenado por precio."

  • "Muéstrame Golf GTI en Providencia publicados en los últimos 7 días."

  • "Crea un monitor llamado 'e30' para BMW E30 en Santiago y avísame de lo nuevo."

  • "Dame el detalle de la publicación con id 1726115965212924."


⚙️ Variables de entorno

Variable

Por defecto

Descripción

CHROME_PROFILE

Default

Nombre de la carpeta del perfil de Chrome del que se leen las cookies

FB_MAX_RPM

3

Máximo de solicitudes por minuto (sube con cuidado; más = más riesgo)

Perfiles de Chrome

Si tu cuenta secundaria está en otro perfil de Chrome, indica su carpeta en CHROME_PROFILE. Los perfiles se guardan en ~/Library/Application Support/Google/Chrome/. El primero es Default; los siguientes son Profile 1, Profile 2, etc.


📦 Generar tu propia extensión .mcpb

Si modificas el código o usas un Mac Intel, regenera el bundle:

npm install
npm run build
npm prune --omit=dev          # deja solo dependencias de producción (bundle liviano)
npx @anthropic-ai/mcpb pack   # genera facebook-marketplace-mcp.mcpb
npm install                   # restaura dependencias para futuros builds

Luego instala el .mcpb en Claude Desktop con doble clic.


🔄 Cuando Facebook cambia sus doc_id

Facebook rota sus identificadores de consulta (doc_id) en cada despliegue. Si las búsquedas dejan de funcionar de golpe, recaptúralos:

npm install -D playwright
npx playwright install chromium
npm run capture-queries

Esto abre un navegador, navega por Marketplace y captura los IDs actuales. Actualiza los valores en src/facebook/queries.ts y vuelve a compilar con npm run build.


🚫 Limitaciones

  • Solo macOS (por el descifrado con el Llavero).

  • Requiere Chrome con sesión de Facebook activa.

  • Frágil: los doc_id cambian cuando Facebook actualiza su sitio.

  • Con límite de tasa: un uso agresivo puede gatillar CAPTCHAs o bloqueos.

  • Solo lectura: no mensajea ni publica.


✨ Características

Funcionalidades del servidor, todas verificadas con búsquedas reales:

  • 🔄 Reintento de sesión automático. Si la sesión expira (401/403 o token rotado), el servidor reinicializa y reintenta la búsqueda de forma transparente.

  • 💰 Filtro de precio configurable. El factor de conversión de precios es explícito y está verificado para pesos chilenos (price_scale, por defecto 100).

  • 📄 Paginación. search_listings acepta un cursor y devuelve el cursor de la página siguiente.

  • 🔎 Filtros y orden. condition, days_since_listed y sort_by (por precio o fecha).

  • 🧾 Resultados ricos. Incluye fecha de publicación, foto, id para usar en get_listing, y marca los precios claramente falsos con ⚠️.

  • 🚦 Rate limit configurable por FB_MAX_RPM.

  • 🛡️ Manejo de errores claro. Distingue "sesión expirada" de otros errores en lugar de fallar en silencio.


📄 Licencia

Uso educativo y personal. Respeta los Términos de Servicio de Facebook y las leyes aplicables. Los autores y contribuyentes no se hacen responsables del uso indebido ni de bloqueos de cuenta.

Available Tools

7 tools
check_monitorsB

Check saved monitors for new listings since last check

ParametersJSON Schema
NameRequiredDescriptionDefault
monitor_nameNoCheck a specific monitor by name, or omit to check all

TDQS

B3.3/5.0
Behavior2/5

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

No annotations are provided, so the description carries full burden. It implies a read-like operation but does not disclose if the tool modifies state (e.g., updating last-checked timestamp) or any side effects, which are critical for an agent.

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 no excess words, perfectly concise for the tool's simple purpose.

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?

The tool is simple (1 optional param, no output schema), but the description lacks details on return value, behavior of 'since last check,' and side effects. It is adequate but not fully complete.

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 coverage is 100%, with the parameter 'monitor_name' described clearly. The description adds no further meaning beyond the schema, but it is not needed given full coverage.

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 verb 'Check' and the resource 'saved monitors' for new listings since last check, distinguishing it from siblings like 'list_monitors' (simple listing) and 'search_listings' (direct search).

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 provides no guidance on when to use this tool versus its siblings (e.g., list_monitors, search_listings) or when not to use it. No exclusions or context are mentioned.

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

delete_monitorB

Delete a saved search monitor

ParametersJSON Schema
NameRequiredDescriptionDefault
nameYesName of the monitor to delete

TDQS

B3.1/5.0
Behavior2/5

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

No annotations provided, so description carries full burden. Only says 'Delete' without disclosing whether deletion is permanent, reversible, or requires special permissions. Minimal behavioral insight.

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?

Single sentence with no extra words. Efficient and to the point.

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 delete tool with one required parameter and no output schema, the description is adequate but could benefit from stating permanence or error conditions. Lacks some completeness expected for a mutation 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 coverage is 100% with one parameter 'name' described as 'Name of the monitor to delete'. Description adds no extra meaning beyond the schema, so 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?

Description clearly states the verb 'Delete' and resource 'saved search monitor', distinguishing it from sibling tools like list_monitors or check_monitors. However, it could be more specific about what exactly a monitor is.

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 guidance on when to use this tool versus other monitor-related tools. No context about prerequisites or caveats.

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

get_listingB

Get full details for a specific Facebook Marketplace listing

ParametersJSON Schema
NameRequiredDescriptionDefault
listing_idYesFacebook Marketplace listing ID

TDQS

B3.3/5.0
Behavior2/5

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

No annotations provided, so full burden falls on description. It states 'get full details' implying a read operation, but lacks disclosure on authentication requirements, error behavior (e.g., nonexistent ID), rate limits, or whether it modifies state. Minimal behavioral context.

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?

Single sentence, front-loaded with key action. No wasted words. Efficiently conveys purpose.

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 one-parameter tool without output schema, the description is minimally adequate. However, it lacks explanation of what 'full details' includes in the response, and does not cover error handling or prerequisites. Could be more complete without being verbose.

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 coverage is 100% with parameter 'listing_id' described as 'Facebook Marketplace listing ID'. Description adds no further meaning; baseline 3 is appropriate as schema already explains the parameter.

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?

Description specifically states 'Get full details for a specific Facebook Marketplace listing', clearly identifying the verb, resource, and scope. It differentiates from sibling tools like search_listings which return multiple results.

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 guidance on when or when not to use this tool. Does not mention alternatives like search_listings for finding listings by criteria or list_monitors for monitors. The description only implies it is for a specific listing ID.

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

list_monitorsB

List all saved search monitors

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

B3.1/5.0
Behavior2/5

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

With no annotations, the description must disclose behavioral traits. It only implies a read operation but lacks details on authentication, rate limits, pagination, or what 'all' entails in terms of scope.

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?

Single sentence, front-loaded with verb and resource. No wasted words.

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?

Despite zero parameters, the tool has no output schema and no annotations, so the description should explain what is returned (e.g., list of monitor IDs, names, statuses). It fails to do so, leaving the agent without context on the output format or field meanings.

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?

No parameters exist, so schema coverage is trivially 100%. The description does not need to add parameter meaning, and baseline for 0 params is 4.

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?

Description clearly states verb 'List' and resource 'saved search monitors', making purpose obvious. However, it does not explicitly differentiate from sibling tools like 'check_monitors' or 'monitor_search', which could cause confusion.

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 guidance on when to use this tool versus alternatives like check_monitors or monitor_search. The description provides no context on prerequisites or exclusions.

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

search_listingsB

Search Facebook Marketplace listings by query, location, and filters

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoMax number of results (default: 20)
queryYesSearch query (e.g. 'bmw e30', 'macbook pro')
cursorNoPagination cursor from a previous search's 'next cursor' to fetch the following page
sort_byNoOrder the returned results: best_match (default), price_asc, price_desc, date_desc (newest first)
categoryNoCategory ID to filter by
latitudeYesLatitude of search center
conditionNoFilter by item condition (server-side)
longitudeYesLongitude of search center
max_priceNoMaximum price filter, in the listing's currency units (e.g. CLP pesos, USD dollars)
min_priceNoMinimum price filter, in the listing's currency units (e.g. CLP pesos, USD dollars)
radius_kmNoSearch radius in kilometers (default: 50)
price_scaleNoAdvanced: multiplier applied to min_price/max_price before sending to Facebook. Facebook uses a 2-decimal minor unit for ALL currencies (including CLP/JPY), so the default 100 is almost always correct. Only override if price filtering behaves oddly in a specific market. Default: 100
days_since_listedNoOnly show items listed within the last N days

TDQS

B3/5.0
Behavior2/5

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

With no annotations, the description must disclose all behavioral traits, but it only mentions search parameters. It omits important behaviors like pagination (though cursor is in schema), rate limits, authentication, or what the response contains. The description adds minimal behavioral context beyond the schema.

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

Conciseness3/5

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

The description is a single sentence, which is concise but lacks structure. It does not front-load critical information like result format or use cases, and the brevity sacrifices completeness for terseness.

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 the complexity (13 parameters, no output schema, no annotations), the description is inadequate. It fails to explain return values, error handling, or how filters interact, leaving significant gaps for an agent to use the tool correctly.

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 coverage is 100% with all 13 parameters documented, so the description need not add much parameter detail. It does not provide any additional semantic meaning beyond what the schema already offers, resulting in a baseline score of 3.

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 ('Search Facebook Marketplace listings') and the inputs ('by query, location, and filters'), making the tool's purpose immediately identifiable and distinguishing it from siblings like 'get_listing' or 'monitor_search'.

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 guidance is provided on when to use this tool versus alternatives such as 'get_listing' for single listings or 'monitor_search' for monitoring. The description lacks any context about prerequisites, when not to use, or which sibling tools to consider instead.

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

search_locationA

Look up a city/town name to get coordinates for use with search_listings

ParametersJSON Schema
NameRequiredDescriptionDefault
queryYesLocation search query (e.g. 'Dedham MA', 'Boston', 'Brooklyn NY')

TDQS

A4.2/5.0
Behavior4/5

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

No annotations provided, so description carries full burden. It accurately describes the read-only lookup behavior and implies output of coordinates. No contradictions or missing critical traits.

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 no waste. It front-loads the action and purpose efficiently.

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 simple single-parameter tool with no output schema, the description covers the essential use case. It could mention coordinate format, but completeness is adequate given the tool's simplicity.

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 coverage is 100% with a well-described query parameter. The description 'for use with search_listings' adds slight context beyond the schema, but does not significantly enhance parameter understanding.

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 verb 'Look up', the resource 'city/town name', and the outcome 'get coordinates for use with search_listings'. It distinguishes from sibling tools like search_listings by specifying it's a geocoding step.

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 ties the tool's use to preparing coordinates for search_listings, providing clear context. It doesn't list alternatives or when not to use, but the purpose is sufficiently narrow.

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.

  1. 7 tool updatesv1.0.0
    • First observedcheck_monitors
    • First observeddelete_monitor
    • First observedget_listing
    • First observedlist_monitors
    • First observedmonitor_search
    • First observedsearch_listings
    • First observedsearch_location

TDQS

A3.6/5.0

Scored across 7 tools

Disambiguation5/5

Each tool serves a distinct purpose: monitors (create, list, check, delete), listings (search, get details), and a location helper. No overlap in functionality.

Naming Consistency4/5

All tool names use snake_case and generally follow a verb_noun pattern (e.g., check_monitors, delete_monitor). 'monitor_search' is a slight deviation as it could be interpreted as noun_verb, but overall consistent.

Tool Count5/5

7 tools cover the essential operations for a Facebook Marketplace tracking service without unnecessary clutter or obvious missing pieces.

Completeness4/5

The tool set provides full CRUD for monitors and listing retrieval, but lacks actions for creating or modifying listings, which may be intentional given API constraints. Minor gap in not supporting category browsing.

Maintenance

ActivityStale
ResponsivenessNo issues

Related MCP Connectors

Related MCP Servers

  • A
    license
    C
    quality
    D
    maintenance
    Enables access to the Facebook Scraper3 API to extract data from Facebook profiles, pages, groups, and the marketplace. It provides comprehensive tools for searching posts, people, and events, as well as retrieving detailed metadata for comments, reactions, and media.
    40
    1
    MIT
  • A
    license
    A
    quality
    C
    maintenance
    A focused Model Context Protocol server that enables AI agents to search Facebook Marketplace and retrieve listing details using public GraphQL endpoints, without browser automation or login.
    3
    1
    MIT