Skip to main content
Glama

linkedin-pilot

Servidor MCP (y CLI) que controla LinkedIn con tu sesión real, en un navegador persistente. Cubre las tres cosas de punta a punta:

  1. Actualizar tu perfil completo — titular, acerca de, experiencia, educación, aptitudes, certificaciones, proyectos, idiomas, foto, portada, información de contacto, URL personalizada y "Abierto a trabajar".

  2. Interactuar con otros perfiles — buscar personas, invitar a conectar con nota, enviar mensajes, seguir, validar aptitudes, gestionar invitaciones, reaccionar y comentar publicaciones, publicar en el feed.

  3. Postular a ofertas de empleo — buscar con todos los filtros de LinkedIn, leer el detalle y completar la Solicitud sencilla (Easy Apply) paso a paso.


Por qué está hecho así

La API oficial no sirve para esto. Desde 2015 LinkedIn exige entrar al Partner Program para cualquier acceso real, y ni siquiera los partners tienen escritura sobre el perfil: la API pública devuelve nombre, titular y correo, y poco más. SNAP dejó de aceptar solicitudes nuevas. No hay ruta oficial para "actualiza mi experiencia" ni para "postula a esta oferta".

Entonces la vía es la interfaz real, conducida por Playwright con tu propia sesión.

Leer y escribir van por caminos distintos

LinkedIn migró el perfil, la oferta de empleo y los resultados de búsqueda a renderizado SDUI: ya no hay <h1>, desaparecieron las anclas de sección (#experience, #about), las clases CSS son hashes que cambian solos y el contenido se carga de forma diferida. Raspar ese HTML para leer es frágil y lento.

Por eso el proyecto usa dos vías:

  • Para leer — la API interna (Voyager), que devuelve el perfil completo y el detalle de una oferta en una sola llamada, estructurados. Se aprovecha la sesión del propio navegador, así que las peticiones salen con las mismas cookies, el mismo user-agent y la misma IP que la navegación real.

  • Para escribir — la interfaz, porque no hay otra: no existe endpoint para guardar tu experiencia ni para postular.

Cuando una vía falla se cae a la otra, y ambas quedan reportadas.

Tres decisiones sostienen lo demás

  • Sesión persistente, login manual. El navegador guarda su perfil en disco, así que inicias sesión una sola vez —con verificación en dos pasos y captcha incluidos— y las cookies sobreviven entre ejecuciones. No se automatiza el login a propósito: automatizarlo es justo lo que dispara los bloqueos, y además obligaría a guardar tu contraseña en algún lado.

  • Los campos se identifican por su etiqueta visible, no por clases CSS. LinkedIn cambia el HTML constantemente y sirve la interfaz en el idioma de la cuenta. El motor de formularios lee el nombre accesible de cada control (aria-label, <label for>, legend...) y lo empareja contra un glosario bilingüe: pedir Titular encuentra Headline, y al revés. Esto se ve funcionando en las postulaciones reales, donde una pregunta como «Confirm the name of the company where you work / Confirme o nome da empresa...» se resuelve sola con la respuesta guardada como «Current company».

  • El contenedor del formulario se descubre, no se asume. Los editores de perfil dejaron de ser ventanas modales: ahora son páginas que ni siquiera cuelgan de <main>, y el asistente de Solicitud sencilla tampoco es un role="dialog". En vez de perseguir esa estructura, el motor parte del botón que cierra el paso (Guardar, Siguiente, Enviar) y sube hasta el primer ancestro que agrupa varios campos. Funcione donde funcione el formulario.

  • Una sola pieza rellena todo. Editar el perfil y postular a un empleo son el mismo problema: un modal con campos. El mismo motor sirve para ambos, así que cualquier sección nueva que LinkedIn agregue ya está soportada sin tocar código.

Y hay una salida de emergencia: si algo se rompe, las herramientas linkedin_browser_* dan control directo del navegador (radiografía de la página, clic por referencia, escritura en campos) para terminar el trabajo a mano sin editar el proyecto.


Related MCP server: LinkedIn MCP Server

Instalación

cd linkedin-pilot
npm install
npm run build

Requiere Node 20+. Usa el Chrome instalado en el sistema; si no lo encuentra prueba con Edge y luego con el Chromium de Playwright.

Registrarlo en Claude Code

Ya quedó registrado en el ámbito de usuario:

claude mcp add linkedin --scope user -- node "<ruta>/linkedin-pilot/dist/index.js"

También hay un .mcp.json en la carpeta padre por si prefieres el ámbito de proyecto. Comprueba con claude mcp list.


Puesta en marcha

npm run login     # abre el navegador; inicia sesión a mano una sola vez
npm run doctor    # diagnóstico: navegador, sesión, rutas, banco de respuestas

Todo lo persistente vive en ~/.linkedin-pilot/:

Ruta

Qué guarda

browser-profile/

Perfil de Chrome con las cookies de sesión

state.json

Postulaciones, interacciones y contadores diarios

answers.json

Banco de respuestas reutilizables y ruta del CV

screenshots/

Capturas automáticas cuando algo falla

logs/

Registro diario en JSON


Uso desde la terminal

linkedin-pilot status                      # ¿hay sesión?
linkedin-pilot profile                     # lee tu perfil completo
linkedin-pilot jobs "ingeniero de datos"   # busca ofertas con Solicitud sencilla
linkedin-pilot job 4021234567              # detalle de una oferta
linkedin-pilot apply 4021234567            # SIMULA la postulación
linkedin-pilot apply 4021234567 --send     # postula de verdad
linkedin-pilot applications                # historial local

Herramientas MCP

Sesión

Herramienta

Qué hace

linkedin_session_status

Estado de la sesión y consumo del día. Empieza siempre por aquí.

linkedin_login

Abre el navegador para que inicies sesión a mano.

linkedin_session_cookies

Exporta o importa cookies (li_at, JSESSIONID).

linkedin_close_browser

Cierra el navegador; la sesión queda guardada.

Perfil

Herramienta

Qué hace

linkedin_profile_read

Lee un perfil completo (el tuyo o el de otra persona).

linkedin_profile_sections

Lista las secciones editables y sus campos habituales.

linkedin_profile_inspect_form

Abre el editor y devuelve los campos reales sin guardar nada.

linkedin_profile_edit

Rellena cualquier sección por etiqueta y guarda si se lo pides.

linkedin_profile_headline

Atajo para el titular.

linkedin_profile_about

Atajo para "Acerca de".

linkedin_profile_image

Sube foto de perfil o portada.

linkedin_profile_open_to_work

Configura "Abierto a trabajar".

linkedin_profile_custom_url

Cambia la URL personalizada.

Secciones disponibles en linkedin_profile_edit, con sus rutas verificadas contra LinkedIn el 2026-09-01: intro, about, experience, education, skill, certification, project, language, course, honor, publication, organization, patent, contactInfo, openToWork.

Flujo recomendado la primera vez que tocas una sección:

1. linkedin_profile_inspect_form { "section": "experience" }
   → te dice exactamente qué campos existen hoy y cuáles son obligatorios
2. linkedin_profile_edit { "section": "experience", "values": {...}, "save": false }
   → los rellena y te muestra qué quedó; revisas en pantalla
3. linkedin_profile_edit { ..., "save": true }

Personas y contenido

Herramienta

Qué hace

linkedin_people_search

Busca personas con filtros de grado de contacto.

linkedin_connect

Invitación a conectar, con nota opcional.

linkedin_message

Mensaje directo.

linkedin_follow

Seguir o dejar de seguir.

linkedin_endorse

Validar aptitudes.

linkedin_invitations

Listar, aceptar, ignorar o retirar invitaciones.

linkedin_posts_read

Publicaciones del feed o de un perfil.

linkedin_post_react

Reaccionar (like, celebrate, support, love, insightful, funny).

linkedin_post_comment

Comentar.

linkedin_post_create

Publicar en el feed.

linkedin_notifications

Leer notificaciones.

Empleos

Herramienta

Qué hace

linkedin_jobs_search

Búsqueda con filtros de fecha, experiencia, modalidad y tipo.

linkedin_job_detail

Detalle completo de una oferta.

linkedin_job_apply

Solicitud sencilla paso a paso. Simula por defecto.

linkedin_job_save

Guardar o quitar de guardados.

linkedin_my_jobs

Ofertas guardadas o solicitudes según LinkedIn.

linkedin_applications_log

Historial local con las respuestas que diste.

Soporte

Herramienta

Qué hace

linkedin_answers_bank

Consulta y edita las respuestas reutilizables y el CV por defecto.

linkedin_usage

Consumo frente a los topes diarios.

linkedin_browser_snapshot

Radiografía de la página: enlaces, botones y campos con referencia.

linkedin_browser_navigate / _click / _type / _scroll / _screenshot

Control manual del navegador.

linkedin_voyager_request

Llamada directa a la API interna de LinkedIn.


Cómo funciona la postulación

linkedin_job_apply simula por defecto. Recorre el asistente completo, rellena lo que sabe y se detiene justo antes de enviar:

{ "job": "4021234567" }

Si el formulario pide algo que no sabe, no inventa: devuelve status: "needs-answers" con la lista exacta de preguntas, sus opciones y una captura. Se las pasas y vuelve a intentar:

{
  "job": "4021234567",
  "answers": { "Años de experiencia en Python": "5" },
  "dryRun": false,
  "confirm": true
}

Las respuestas quedan guardadas en el banco, así que la siguiente oferta que pregunte lo mismo —aunque lo redacte distinto o en otro idioma— ya no se atasca. Cuanto más completo el banco, menos intervención necesitas.

Detalles que importan:

  • Las ofertas que no son Solicitud sencilla devuelven status: "external" con el enlace de la empresa. No se puede completar desde LinkedIn.

  • "Seguir a la empresa" viene marcado por defecto en LinkedIn; aquí se desmarca salvo que pidas followCompany: true.

  • Cada postulación queda registrada, así que no repites ofertas.


Cuidados con la cuenta

Automatizar LinkedIn va contra sus condiciones de uso y las cuentas que se pasan de volumen terminan restringidas. El proyecto está construido para quedarse muy por debajo del umbral:

  • Toda acción visible para terceros exige confirm: true. Invitaciones, mensajes, comentarios, publicaciones y postulaciones no salen por accidente.

  • Topes diarios conservadores, con contador persistente:

    Acción

    Tope

    Variable de entorno

    Invitaciones enviadas

    20

    LINKEDIN_PILOT_MAX_INVITATIONS

    Respuestas a invitaciones

    100

    LINKEDIN_PILOT_MAX_INVITATION_RESPONSES

    Validaciones de aptitudes

    20

    LINKEDIN_PILOT_MAX_ENDORSEMENTS

    Mensajes

    25

    LINKEDIN_PILOT_MAX_MESSAGES

    Postulaciones

    20

    LINKEDIN_PILOT_MAX_APPLICATIONS

    Reacciones

    50

    LINKEDIN_PILOT_MAX_REACTIONS

    Comentarios

    15

    LINKEDIN_PILOT_MAX_COMMENTS

    Seguimientos

    30

    LINKEDIN_PILOT_MAX_FOLLOWS

    Publicaciones

    3

    LINKEDIN_PILOT_MAX_POSTS

  • Ritmo humano: pausas con variación aleatoria, escritura con cadencia irregular y desplazamiento por pasos.

  • Un navegador normal: Chrome real, ventana visible, sin el marcador navigator.webdriver.

Subir los topes es tu decisión, pero los valores por defecto son lo que mantiene la cuenta sana.


Configuración

Variable

Por defecto

Para qué

LINKEDIN_PILOT_HOME

~/.linkedin-pilot

Carpeta de datos

LINKEDIN_PILOT_HEADLESS

false

Ocultar la ventana (no recomendado)

LINKEDIN_PILOT_CHANNEL

chrome

chrome, msedge o chromium

LINKEDIN_PILOT_LOCALE

es-CO

Idioma del navegador

LINKEDIN_PILOT_TZ

America/Bogota

Zona horaria

LINKEDIN_PILOT_REQUIRE_CONFIRM

true

Exigir confirmación explícita

LINKEDIN_PILOT_MIN_DELAY / _MAX_DELAY

700 / 2200

Rango de pausa entre acciones (ms)

LINKEDIN_PILOT_VERBOSE

false

Diagnóstico detallado en stderr


Pruebas

npm test              # emparejado de etiquetas + arranque del servidor MCP
npm run test:forms    # motor de formularios contra el HTML real de LinkedIn
npm run test:live     # editores de perfil, empleos y personas con tu sesión

test:matching cubre lo más delicado: que pedir un campo no escriba en otro, que el glosario funcione en los dos idiomas y que el banco de respuestas no se invente una respuesta para una pregunta que no conoce.

test:live necesita sesión iniciada. Abre los editores de perfil para comprobar que exponen sus campos, y hace una búsqueda de empleos y otra de personas. No guarda ni envía nada. Es lo que hay que correr cuando algo deje de funcionar: dice en qué punto se rompió.


Cuando LinkedIn cambie algo

Pasará. El orden para arreglarlo, de menos a más esfuerzo:

  1. linkedin_profile_inspect_form o linkedin_browser_snapshot para ver qué campos y botones hay ahora.

  2. Terminar la tarea con linkedin_browser_click y linkedin_browser_type.

  3. Si el cambio es permanente, ajustar la ruta en SECTIONS (src/tools/profile.ts) o añadir el término nuevo al glosario (src/text.ts). Casi nunca hace falta más.

Available Tools

39 tools
linkedin_answers_bankC

Consulta o edita el banco de respuestas que se reutiliza al postular (datos de contacto, años de experiencia, disponibilidad, CV por defecto...). Cuanto más completo, menos se atascan las postulaciones.

ParametersJSON Schema
NameRequiredDescriptionDefault
labelNo
valueNo
actionYes
entriesNoVarias claves de una vez.

TDQS

C2.7/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 the full behavioral burden. It discloses that the tool both reads and mutates the answer bank, but says nothing about permissions, reversibility, whether 'set' overwrites or merges, or what a read returns. For a mutation-capable tool with zero annotation coverage this is a significant gap.

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?

Two sentences, front-loaded with the verb+resource and a brief rationale. No filler, though the second sentence is more persuasion than information.

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?

A 4-parameter mutation tool with no annotations, no output schema, and an action enum with four undocumented modes. The description leaves the agent unable to determine how to invoke set-profile vs set-resume vs set, or what read returns, which is inadequate for this complexity.

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 only 25% (solely the 'entries' param is annotated), so the description must compensate but does not. It never explains the action enum values, nor the label/value pairing convention, nor how 'set-profile'/'set-resume' differ from plain 'set'. The content examples hint at possible labels but do not map to parameters.

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

Purpose4/5

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

The description states a specific verb pair ('Consulta o edita') and a concrete resource ('banco de respuestas que se reutiliza al postular'), then enumerates example contents (contact data, experience, availability, default CV). An agent can tell it apart from sibling tools like linkedin_job_apply or linkedin_profile_edit, but the description does not name any siblings explicitly.

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 explicit when-to-use guidance or any statement about which action to pick (read vs set vs set-profile vs set-resume). The closing sentence ('Cuanto más completo, menos se atascan las postulaciones') is motivational advice, not routing guidance. Usage is only implied by the relationship to applying.

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

linkedin_applications_logC

Historial local de postulaciones hechas con esta herramienta, con su estado y las respuestas dadas.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNo

TDQS

C2.8/5.0
Behavior2/5

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

With no annotations, the description carries the full behavioral burden. It usefully discloses that the data is stored locally and includes application status and responses, but says nothing about ordering, freshness, read-only nature, or whether a session is required.

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?

A single tight sentence with the resource front-loaded and no filler. Nothing extraneous, though it is arguably too sparse for the information an agent needs.

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 one-parameter read tool with no output schema and no annotations, the description at least identifies the payload contents (status and responses). It is still incomplete regarding the limit parameter and result ordering.

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 coverage is 0% for the single 'limit' parameter, and the description never mentions it, its bounds, or how the result set is capped or ordered. The description does not compensate for the undocumented parameter.

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?

States a specific resource and scope: a local history of applications made by this tool, including status and responses. It is reasonably distinguishable from siblings like linkedin_my_jobs, though it does not explicitly contrast itself with them.

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 statement of when to reach for this tool rather than linkedin_my_jobs, linkedin_job_apply, or linkedin_usage. Usage must be inferred entirely from the noun 'historial'.

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

linkedin_browser_clickB

Pulsa un elemento por su ref (de un snapshot previo) o por su texto visible.

ParametersJSON Schema
NameRequiredDescriptionDefault
refNo
textNo

TDQS

B3.2/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 the full behavioral burden, yet it only says what a click is. It does not disclose side effects (navigation, form submission, new page load), permission requirements, or what happens on failure, which matters for an action that mutates page state.

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?

A single sentence with zero filler that front-loads the action and then the two targeting modes. Nothing could be removed without losing information.

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?

With no annotations, no output schema, and no parameter documentation, the description is thin for an interactive browser action. An agent gets no information about the result of the click, whether it waits for navigation, or how to obtain a valid ref, leaving a significant gap.

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 0%, so the description must compensate, and it does partially by explaining that ref comes from a prior snapshot and that text is the element's visible text. However, it leaves ambiguity about whether the two parameters are mutually exclusive, which takes precedence if both are supplied, and why both are optional.

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

Purpose4/5

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

The description states a specific verb (click) and resource (element), and specifies the two ways to identify the target. It implicitly links to linkedin_browser_snapshot by requiring a ref from a previous snapshot, which helps distinguish it from the other browser_* siblings, but it does not name any sibling explicitly.

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 only implied: the parenthetical '(de un snapshot previo)' hints that a snapshot must be taken first, which is a useful prerequisite. However, there is no explicit guidance on when to click by ref vs. by visible text, and no mention of alternatives such as linkedin_browser_type or linkedin_browser_navigate.

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

linkedin_browser_navigateC

Navega a una URL de LinkedIn y devuelve la radiografía de la página.

ParametersJSON Schema
NameRequiredDescriptionDefault
urlYes

TDQS

C2.7/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 the full disclosure burden, yet it only says it returns a page 'radiografía'. It omits auth/session requirements, whether navigation triggers a browser launch, how redirects or rate limits are handled, and what the returned snapshot actually contains.

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?

A single compact sentence that front-loads the action and result with no wasted words. Its brevity is a virtue here, though only because so little is stated.

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?

For a navigation tool with no annotations, no output schema, and no parameter documentation, the description is too thin. An agent cannot know it needs an authenticated session or what the returned 'radiografía' comprises before calling it.

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?

The single 'url' parameter is undocumented in the schema (0% coverage). The description adds the constraint that the URL must be LinkedIn, but given the tool name already implies LinkedIn, this is marginal and no format or example is given.

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?

States a specific verb ('Navega') and resource ('una URL de LinkedIn') plus a return value ('la radiografía de la página'). An agent can tell it navigates a browser, though it does not contrast itself with the closely related 'linkedin_browser_snapshot', which also returns page content.

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 versus alternatives such as linkedin_browser_snapshot, linkedin_browser_click, or the profile/login tools. No prerequisites (an active logged-in session) are mentioned, leaving the agent to infer context.

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

linkedin_browser_screenshotC

Guarda una captura de la pantalla actual y devuelve la ruta.

ParametersJSON Schema
NameRequiredDescriptionDefault
nameNo

TDQS

C2.8/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 the full burden. It does disclose that the result is a file path, which is useful, but says nothing about output format, where the file is stored, or session/auth requirements for a browser operation.

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?

A single efficient sentence with the key action and return value front-loaded. No filler, though it is arguably under-specified rather than merely concise.

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 screenshot tool this covers the core behavior, but the undocumented 'name' parameter and the unresolved overlap with linkedin_browser_snapshot leave gaps an agent would likely hit in practice.

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?

There is one optional 'name' parameter at 0% schema description coverage, and the description never mentions it. The agent gets no idea whether 'name' names the file, a target element, or something else, so the description fails to compensate for the coverage gap.

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

Purpose4/5

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

The description states a specific verb and resource – it captures the current screen and returns the file path – which is clear. However, it never differentiates itself from the sibling linkedin_browser_snapshot, so an agent cannot tell the two apart from the text alone.

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 when-to-use guidance, no prerequisite (e.g. an open browser session), and no mention of the near-identical linkedin_browser_snapshot sibling. The agent must infer the appropriate context entirely.

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

linkedin_browser_scrollC

Desplaza la página para cargar contenido diferido.

ParametersJSON Schema
NameRequiredDescriptionDefault
stepsNo

TDQS

C2.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 the full behavioral burden. It does disclose the lazy-loading motivation, but says nothing about how far scrolling proceeds, whether it mutates page state, or whether it blocks/returns after content loads.

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?

One short, front-loaded sentence with no waste or redundancy. Its brevity is a strength structurally, though it sits at the edge of under-specification.

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?

With no annotations, no output schema, and an undocumented parameter, the definition leaves an agent unable to call the tool precisely. For a simple browser pagination action, a sentence on step behavior and return timing would have closed the gap.

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

Parameters1/5

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

The single parameter "steps" has 0% schema description coverage and is never mentioned in the description, so its meaning, default, and the 1-20 bound are entirely undisclosed. With low coverage the description was required to compensate and does not.

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

Purpose3/5

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

"Desplaza la página" names a concrete verb+resource and adds a purpose clause ("para cargar contenido diferido"), so the basic action is clear. However, it offers no differentiation from siblings like linkedin_browser_snapshot or linkedin_browser_click, and it is written in Spanish while the rest of the tool set is English.

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 scroll versus taking a snapshot or navigating, nor any mention of prerequisites such as an open session. The only implied usage is the lazy-load rationale, which is not enough to route an agent among the many browser siblings.

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

linkedin_browser_snapshotB

Radiografía de la página actual: enlaces, botones y campos con una referencia para pulsarlos o rellenarlos. Es la salida de emergencia cuando una herramienta de alto nivel no encuentra algo.

ParametersJSON Schema
NameRequiredDescriptionDefault
textLimitNo
scopeSelectorNoPor ejemplo 'div[role="dialog"]' o "main".

TDQS

B3.4/5.0
Behavior3/5

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

With no annotations, the description carries the full disclosure burden. It conveys the fallback role and the returned content (actionable references), and implies a read operation, but omits whether login/session is required, any rate limits, and side-effect profile. Adequate context, but incomplete for an annotation-free tool.

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?

Two tight sentences: the first front-loads what the output is, the second routes usage. No filler or redundancy, though the structure is minimal rather than notably well-organized.

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?

There is no output schema, so the description must describe returns; it does so at a high level (links, buttons, fields with references). It leaves the undocumented textLimit parameter and any session prerequisites unaddressed, so an agent still has gaps before invoking it confidently.

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?

The description never mentions either parameter. With only 50% schema coverage, textLimit is undocumented in both the schema and the description, and scopeSelector's purpose is left entirely to the schema. The prose adds no semantic value for the parameters.

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?

States a specific action and output: a snapshot of the current page containing links, buttons and fields with references to click or fill. This clearly differentiates it from the visual linkedin_browser_screenshot and the higher-level action tools. It stops short of naming an explicit sibling, but the resource and return content are unambiguous.

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?

Explicitly positions itself as 'la salida de emergencia' (the fallback) when a high-level tool fails to find something, giving a clear when-to-use condition. It does not state an explicit when-not or name the specific high-level alternatives it complements, so it falls short of a 5.

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

linkedin_browser_typeC

Escribe en un campo identificado por ref.

ParametersJSON Schema
NameRequiredDescriptionDefault
refYes
textYes
submitNo

TDQS

C2.2/5.0
Behavior2/5

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

With no annotations, the description carries the full behavioral burden but discloses almost nothing: it does not explain that `ref` comes from a prior snapshot, whether the field must be focused first, or what the `submit` flag triggers (e.g. form submission/navigation). Only the bare mutation intent is implied.

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?

A single short sentence with no wasted words, but it is under-specified rather than genuinely concise. Size is appropriate; content is thin.

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?

For a 3-parameter browser-automation primitive with zero annotation coverage, no output schema, and no schema descriptions, the definition is incomplete. An agent lacks the context needed to reliably obtain a `ref` or predict the effect of `submit`.

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% across three parameters, and the description only alludes to `ref`. The `text` parameter and especially the optional `submit` boolean (whose default and side effects are unknown) receive no semantic explanation anywhere.

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

Purpose3/5

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

The Spanish description states a verb and a target ('Escribe en un campo') tied to the `ref` parameter, so the core action is inferable. However, it gives no scope or differentiation from the many sibling browser tools (click, snapshot, navigate), leaving the agent to guess when typing is the right primitive.

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

Usage Guidelines1/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 `linkedin_browser_click`, `linkedin_browser_navigate`, or `linkedin_browser_snapshot`. No prerequisites, no mention of needing a prior snapshot to obtain a valid `ref`, and no exclusions.

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

linkedin_close_browserA

Cierra el navegador. La sesión sigue guardada en disco: la próxima herramienta lo vuelve a abrir.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A3.7/5.0
Behavior3/5

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

With no annotations, the description carries the full burden. It usefully discloses that the session persists on disk and will be reopened by the next tool, which is the most important behavioral fact for this tool. However, it says nothing about what is lost when the browser closes (open page state, in-flight operations) or whether the call blocks.

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 with zero waste, leading with the action and immediately following with the consequence that matters most to the caller. Every clause 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 lifecycle tool with no output schema, the description covers the essential concern (session durability across close/reopen). It could add a sentence on what browser state is discarded, but nothing needed to invoke it correctly is absent.

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 takes zero parameters, which is the baseline-4 case; there is nothing for the description to clarify beyond the schema's empty object. No parameter detail is required or missing.

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 gives a specific verb+resource ('Cierra el navegador' / close the browser), which is clearly distinct from navigation, snapshot, or session-status siblings. It does not explicitly name any sibling, so it falls short of full differentiation, but the action is unambiguous.

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 stated: an agent can infer this is the teardown step at the end of a browser workflow, and the note that the next tool reopens the browser hints at ordering. There is no explicit when-to-use, when-not-to-use, or named alternative.

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

linkedin_connectA

Envía una invitación a conectar, con nota opcional (máx. 300 caracteres). Acción visible para la otra persona: exige confirm=true.

ParametersJSON Schema
NameRequiredDescriptionDefault
noteNo
targetYesURL del perfil o identificador público.
confirmNoDebe ser true para enviar de verdad.

TDQS

A3.5/5.0
Behavior4/5

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

With no annotations present, the description carries the full burden, and it usefully discloses that the action is visible to the recipient and that confirm=true is mandatory. It stops short of covering rate limits, what happens if the invitation is already pending, or the result of the call.

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 compact sentences with the core action first, then the note constraint, then the visibility/confirmation caveat. No filler, nothing repeated unnecessarily.

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 3-parameter mutation tool with no annotations and no output schema, the description covers the essential prerequisites (confirm=true) and side-effect visibility. It omits failure modes and post-send state, leaving a moderate gap.

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

Parameters3/5

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

Schema description coverage is 67%; the schema already documents target (URL/public identifier) and confirm, and maxLength=300 already encodes the note limit that the description restates. The description adds only marginal meaning beyond the schema.

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?

States a specific verb and resource ('Envía una invitación a conectar'), which is clearly distinguishable from siblings like linkedin_follow or linkedin_message. It does not, however, explicitly name those alternatives to sharpen the distinction.

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 send a connection invite versus using linkedin_follow, linkedin_message, or linkedin_invitations. The closest thing to a condition is the confirm=true prerequisite, which is a safety gate rather than usage guidance.

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

linkedin_endorseC

Valida aptitudes en el perfil de otra persona. Exige confirm=true.

ParametersJSON Schema
NameRequiredDescriptionDefault
skillsYes
targetYes
confirmNo

TDQS

C2.7/5.0
Behavior3/5

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

With no annotations, the description carries the full burden, but it does disclose one substantive behavioral fact: the operation requires confirm=true. This matters because the schema's required list omits confirm, so the description reveals a de facto mandatory gate for a write action on someone else's profile. It still says nothing about permissions, whether endorsement is reversible, or rate limits.

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?

Two short sentences with the purpose front-loaded and the hard requirement immediately after. No filler, though it is arguably too terse to be fully useful.

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?

For a mutation tool with no annotations, no output schema, and 0% parameter coverage, the description is thin: an agent cannot infer the expected form of target or how to obtain valid skill strings. Only the confirm gate is covered.

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% for 3 parameters. The description clarifies confirm (effectively required, contradicting the schema's required list) but leaves target (format? URL, vanity name, URN?) and skills (which skill names are valid, where they come from) completely unspecified, so it compensates for only one of three gaps.

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

Purpose3/5

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

"Valida aptitudes en el perfil de otra persona" gives a verb (valida) and a resource (aptitudes/perfil ajeno), and the scoping to another person's profile is useful. However, "validar" is a loose synonym for endorsing given the tool name linkedin_endorse, and nothing distinguishes it from siblings like linkedin_profile_read or linkedin_profile_sections that also touch profiles.

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 only guidance is "Exige confirm=true," which is a precondition rather than when-to-use direction. There is no mention of when to endorse versus messaging, following, or reading a profile, and no exclusions.

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

linkedin_followB

Sigue o deja de seguir un perfil. Exige confirm=true.

ParametersJSON Schema
NameRequiredDescriptionDefault
followNotrue para seguir (por defecto), false para dejar de seguir.
targetYes
confirmNo

TDQS

B3.2/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 full burden. It does disclose one meaningful behavioral requirement — that confirm=true is mandatory before the action executes — which is a safety guard the schema does not explain. It omits side effects (does following notify the target?), reversibility, and any rate limits or auth requirements.

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 with no filler, and the confirm precondition is front-loaded so an agent cannot miss it. Nothing could be removed without losing information.

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?

This is a mutating social action with no annotations, no output schema, and an undocumented required parameter. The description says nothing about result behavior, errors when confirm is omitted, or whether the operation is idempotent, leaving real gaps for a write 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 only 33% and the required 'target' parameter has no description at all. The description partially compensates by clarifying follow's direction and the mandatory confirm flag, but it adds nothing about what form 'target' takes (vanity name, URL, URN) or its accepted syntax.

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 names a specific verb pair and resource: follow or unfollow a profile. That is unambiguous. It does not, however, distinguish itself from adjacent siblings like linkedin_connect or linkedin_endorse, which involve related social actions on profiles.

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 follow versus when to use linkedin_connect (connection request) or any other sibling, and no stated preconditions beyond the confirm flag. Usage must be inferred purely from the verb.

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

linkedin_invitationsC

Lista invitaciones pendientes (recibidas o enviadas), y permite aceptar, ignorar o retirar.

ParametersJSON Schema
NameRequiredDescriptionDefault
actionYes
confirmNo
personNameNoNombre exacto, necesario para aceptar/ignorar/retirar.

TDQS

C2.7/5.0
Behavior2/5

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

No annotations exist, so the description carries the full burden. It reveals that accept/ignore/withdraw are mutations, but says nothing about whether they are irreversible, whether the 'confirm' flag gates them, whether authentication is required, or what the list actions return.

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?

A single compact sentence that front-loads the resource and then the capabilities. No waste, though a second clause spelling out the confirm/personName requirements would have earned its place.

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?

Three parameters, no annotations, and no output schema, yet the description explains neither the 'confirm' flag, nor the personName requirement for mutations, nor what the listing actions return. For a tool that mixes reads and destructive writes, this is under-specified.

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 coverage is only 33%: personName is documented in the schema itself, but the description adds no meaning for 'action' beyond restating the enum values in prose and says nothing about the undocumented 'confirm' boolean, whose required/optional role is left entirely opaque.

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?

States a specific resource (pending invitations) and enumerates the supported verbs (list received/sent, accept, ignore, withdraw), so the agent can distinguish it from linkedin_connect, which sends new invitations. It is clear but does not explicitly name a sibling it must not be confused with.

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?

It implies the operational range by listing the five actions, but gives no guidance on when to pick this tool over linkedin_connect or linkedin_notifications, and no preconditions for the mutating actions. Nothing tells the agent when a given action is appropriate.

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

linkedin_job_applyA

Postula a una oferta con Solicitud sencilla. POR DEFECTO SIMULA: recorre todo el formulario, lo rellena y se detiene antes de enviar, devolviendo qué preguntas faltan por responder. Para enviar de verdad hay que pasar dryRun=false Y confirm=true. Las respuestas nuevas se guardan para reutilizarlas en las siguientes ofertas.

ParametersJSON Schema
NameRequiredDescriptionDefault
jobYesId numérico o URL de la oferta.
dryRunNoPor defecto true.
answersNoRespuestas por etiqueta. Ejemplo: {"Años de experiencia en Python": "5"}
confirmNoObligatorio para enviar de verdad.
maxStepsNo
resumePathNoRuta al CV en PDF.
followCompanyNoSeguir a la empresa al postular. Por defecto false.
rememberAnswersNo

TDQS

A4.8/5.0
Behavior5/5

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

With no annotations, the description carries the full burden and does it well: it discloses that the default is a dry-run that walks the whole form and returns missing questions, that a real submission requires two flags, and that answers are persisted for future use. These are real side-effects and safety behaviors beyond what any structured field provides.

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?

Front-loads the default safe behavior, then the condition to override, then the persistence side-effect, in a compact set of sentences with no filler.

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 an 8-parameter, no-output-schema mutation tool, the description covers the safety default, the send condition, and answer persistence well. Minor gaps remain for maxSteps and resumePath behavior, but nothing essential to calling it correctly is missing.

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

Parameters4/5

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

Schema coverage is 75% but the description adds the crucial semantics: dryRun defaults to true and confirm is mandatory for a real send, plus that answers persist. It doesn't document maxSteps, resumePath, or rememberAnswers, so those rely on the schema alone, but the critical interaction between parameters is explained.

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?

States a specific verb and resource ('Postula a una oferta con Solicitud sencilla' = apply to an offer via Easy Apply), which clearly distinguishes it from linkedin_job_save (saving) or linkedin_job_detail (reading). An agent can identify the action without opening 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 Guidelines5/5

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

Explicitly states the default is a simulation that fills the form and stops before submitting, and gives the exact condition needed to actually send (dryRun=false AND confirm=true). It also notes new answers are reused in later applications, covering the when-to-use-and-what-to-expect.

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

linkedin_job_detailC

Trae el detalle completo de una oferta: descripción, empresa, ubicación, número de solicitantes y si admite Solicitud sencilla.

ParametersJSON Schema
NameRequiredDescriptionDefault
jobYesId numérico o URL de la oferta.

TDQS

C2.9/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 the full behavioral burden. It does not state that this is a read-only operation, whether it requires an authenticated session, whether it navigates or mutates browser state, or whether it can fail for closed/expired postings.

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?

A single front-loaded sentence with no filler; the returned-field list is directly useful given there is no output schema, though it is slightly long for the amount of actionable information conveyed.

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 one-parameter read tool with an exhaustive schema and no output schema, the description usefully enumerates the returned payload, which partly compensates for the missing output schema. It is still incomplete on session/auth requirements, which matter in this browser-automation 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% — the single "job" parameter already documents that it accepts a numeric ID or URL. The description adds nothing about the parameter beyond what the schema states, so the baseline 3 applies.

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?

States a specific verb ("Trae") and resource ("detalle completo de una oferta") and enumerates the returned fields (description, company, location, applicant count, Easy Apply flag), which distinguishes it from linkedin_jobs_search. It never names a sibling or exclusion explicitly, so differentiation is implicit rather than stated.

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 when-to-use guidance: nothing says this should be called after linkedin_jobs_search to resolve a job ID, nor that linkedin_job_apply is the follow-up action. No prerequisites (e.g. an active logged-in session) are mentioned despite this being a browser-backed session tool.

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

linkedin_job_saveC

Guarda o quita una oferta de la lista de guardados.

ParametersJSON Schema
NameRequiredDescriptionDefault
jobYes
saveNo

TDQS

C2.7/5.0
Behavior2/5

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

No annotations exist, so the description carries the full behavioral burden. It does convey that the tool can both save and unsave, but it omits authentication requirements, whether the operation is idempotent, what happens on repeat calls, and how the target job is identified.

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?

A single short sentence, front-loaded with the core action and free of filler. It is efficient, though it is so terse that brevity comes at the cost of the missing detail noted elsewhere.

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?

For a mutation tool with no annotations, no output schema, and fully undocumented parameters, the description is too thin to let an agent call it correctly without guessing the `job` format and `save` semantics.

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% and neither parameter is documented. The description hints that direction is controllable (save vs remove) but never explains what format the required `job` string takes (ID, URL, slug) or what the `save` boolean defaults to or does.

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 gives a clear verb pair ("Guarda o quita" = save or remove) and a specific resource (a job offer in the saved list), so an agent can tell it is not linkedin_job_apply or linkedin_my_jobs. It stops short of explicitly naming which sibling handles related operations, but the action is unambiguous.

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 statement of when to use this versus linkedin_job_detail, linkedin_job_apply, or linkedin_my_jobs, and no preconditions (login state, valid job identifier). Usage can only be inferred from the single sentence.

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

linkedin_loginA

Abre una ventana de navegador en la pantalla de inicio de sesión y espera a que el usuario entre a mano (contraseña, verificación en dos pasos, captcha). La sesión queda guardada en disco y se reutiliza en llamadas futuras. No automatiza el login a propósito: hacerlo es lo que dispara los bloqueos de LinkedIn.

ParametersJSON Schema
NameRequiredDescriptionDefault
timeoutSecondsNoCuánto esperar a que termines de iniciar sesión. Por defecto 300.

TDQS

A4.1/5.0
Behavior4/5

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

With no annotations, the description carries the full burden and does it well: it discloses the blocking wait for manual entry including 2FA/captcha, that the session is persisted to disk and reused, and the deliberate anti-automation rationale to avoid LinkedIn blocks. It omits what a login failure looks like or how completion is signaled.

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 focused sentences, front-loaded with the action, then persistence semantics, then the rationale. Every sentence contributes distinct information with no filler.

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 login tool with no output schema and no annotations, the definition covers the interaction model but is silent on return values and how success versus timeout/failure is reported to the agent. Adequate but with a clear gap.

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% and the single timeoutSeconds parameter is fully documented in the schema, so the description adds no parameter detail. Baseline 3 is appropriate when 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?

States a specific action (opens a browser window at the login screen) and its defining scope (waits for manual user login). This clearly distinguishes it from siblings such as linkedin_session_status and linkedin_close_browser without needing their schemas.

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?

Implies the tool is the entry point for establishing a session before other authenticated calls, and explains why login is intentionally manual. It never explicitly names an alternative or states when NOT to use it (e.g., 'skip if linkedin_session_status shows an active session').

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

linkedin_messageC

Envía un mensaje directo a un contacto. Exige confirm=true.

ParametersJSON Schema
NameRequiredDescriptionDefault
textYes
targetYes
confirmNo

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 full behavioral burden. It usefully discloses the confirm=true requirement, which is non-obvious because the schema does not list confirm as required (only target and text are). However, it omits other important traits for an irreversible outbound action: auth prerequisites, rate limits, and consequences of omitting confirm.

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?

Two short sentences, front-loaded with the action and followed by the constraint. No wasted words, though it is arguably too sparse given the complexity of the operation.

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?

For an external, side-effecting message-send tool with no annotations, no output schema, and 0% parameter coverage, the description is too thin. It should specify the target format, auth requirement, irreversibility, and possibly rate limits to be callable with confidence.

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 for all three parameters. It loosely covers target ("a un contacto") and the confirm requirement, but says nothing about the text parameter (the message body, up to 8000 chars) or the expected format of target (handle, URL, name?). The coverage gap is not filled.

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

Purpose4/5

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

The description states a specific verb+resource ("Envía un mensaje directo a un contacto"), clearly distinguishing it from siblings like linkedin_connect (connection request) or linkedin_post_comment (public comment). It does not explicitly name any sibling it must not be confused with, but the purpose is unambiguous.

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 such as linkedin_connect or linkedin_post_comment, and no preconditions beyond the confirm flag. The agent must infer usage context entirely.

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

linkedin_my_jobsB

Lista tus ofertas guardadas o tus solicitudes enviadas según LinkedIn ("Mis empleos").

ParametersJSON Schema
NameRequiredDescriptionDefault
tabNo

TDQS

B3.2/5.0
Behavior2/5

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

No annotations and no output schema, so the description carries the full behavioral burden. It implies a read-only listing but says nothing about authentication requirements, result limits, pagination, or what fields are returned, and it does not disclose whether the saved/applied lists behave differently.

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?

One sentence with no filler, and the resource being listed is front-loaded. It is appropriately sized for a one-parameter listing tool, though the parenthetical brand reference is decorative rather than informative.

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 read tool with one optional enum parameter and no output schema, the description is minimally adequate. It leaves gaps around login/session prerequisites and result shape that an agent would have to discover at call time.

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 0% and the single 'tab' parameter is only an enum, so the description must add meaning. It does translate the enum into natural language ('ofertas guardadas' = saved, 'solicitudes enviadas' = applied), but adds no default value, no behavior when omitted, and no other 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 pairs a specific verb ('Lista') with a specific resource ('tus ofertas guardadas o tus solicitudes enviadas') and anchors it to LinkedIn's 'Mis empleos' section. It is clear what the tool returns, though it never explicitly names how it differs from siblings like linkedin_jobs_search (open search) or linkedin_applications_log.

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: this tool is for reviewing jobs you already saved or applied to, not for discovering new ones. However, there is no explicit when-to-use statement, no exclusion of the closely related linkedin_jobs_search / linkedin_applications_log, and no stated prerequisite such as an active session.

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

linkedin_notificationsC

Lee las notificaciones recientes.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNo

TDQS

C2.4/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 the full behavioral burden, and it discloses almost nothing: not whether reading requires authentication, whether results are paginated, whether 'recientes' implies a fixed window, or what the response contains. Only the vague implication of a read-only retrieval is conveyed.

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?

One short, front-loaded sentence with no filler, which is well-sized for a simple read tool. The brevity here reflects under-specification rather than tight editing, so it cannot score higher.

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?

With no annotations, no output schema, and an undocumented parameter, the description leaves too much unexplained for a tool in a dense 40-sibling surface. An agent has no basis for deciding between this and linkedin_invitations or linkedin_usage.

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 coverage is 0% and the single 'limit' parameter (1-50) is undocumented in both schema and description. The description never mentions the limit or its meaning, so an agent cannot tell whether omitting it applies a default or returns everything.

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

Purpose3/5

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

The description states a clear verb+resource ('Lee las notificaciones recientes') so the agent knows it retrieves notification data. However, it offers no differentiation from the many other read-oriented siblings (linkedin_posts_read, linkedin_invitations, linkedin_session_status), and the 'recientes' scope is never bounded.

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 when-to-use guidance, no prerequisites (e.g., that a logged-in session is required for LinkedIn), and no mention of alternatives or exclusions. The agent must infer entirely from the name that this is the tool for checking notifications.

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

linkedin_post_commentC

Comenta una publicación. Exige confirm=true.

ParametersJSON Schema
NameRequiredDescriptionDefault
textYes
confirmNo
postUrlYes

TDQS

C2.8/5.0
Behavior2/5

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

With no annotations provided, the description carries the full behavioral burden, yet it only adds the confirm=true gate. It does not disclose that this is a public, non-reversible write action, nor auth/permission needs, rate limits, or failure modes.

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 very short sentences, with the action stated first and the safety constraint second. Zero wasted words and well front-loaded.

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?

For a mutation tool with no annotations, no output schema, and no parameter documentation, the description is far too thin. An agent lacks the when-to-use context and the semantics of the required text/postUrl parameters.

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% and neither text nor postUrl meaning is explained. The description only clarifies that confirm must be true (schema lists it as optional), which is useful but leaves two required parameters undocumented.

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?

States a specific verb and resource (comment on a post), which cleanly distinguishes it from siblings such as linkedin_post_react, linkedin_post_create, and linkedin_posts_read. However, it offers no explicit differentiation from those siblings in the text itself.

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 linkedin_post_react or linkedin_message, nor any exclusions or prerequisites beyond the bare confirm requirement. Usage must be inferred from the name alone.

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

linkedin_post_createB

Publica en el feed. Exige confirm=true.

ParametersJSON Schema
NameRequiredDescriptionDefault
textYes
confirmNo
imagePathNo
visibilityNo

TDQS

B3.1/5.0
Behavior3/5

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

With no annotations, the description carries the full behavioral burden, and it does disclose one meaningful trait: this is a write action gated behind an explicit confirm=true flag. It does not describe visibility defaults, permanence, rate limits, or what publishing returns. It also asserts confirm is mandatory while the schema's required list contains only "text", which is a latent inconsistency the caller must resolve.

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?

Two short sentences with no filler, and the action is front-loaded ahead of the prerequisite. The brevity is efficient rather than padded, though it shades into under-specification rather than true economy.

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?

For an unannotated mutation tool with no output schema and 0% parameter coverage, the description should explain visibility behavior, image handling, and the confirmation contract. It covers only the action and the confirm gate, so an agent is left guessing about most of the call surface.

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% across 4 parameters, so the description must compensate and largely does not: text, imagePath, and the visibility enum (anyone/connections) are never explained. Only confirm is addressed, leaving most of the parameter surface undocumented in both places.

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?

"Publica en el feed" states a specific verb (publish) and a specific resource/location (the LinkedIn feed), so the agent knows exactly what the tool does. It does not differentiate from siblings such as linkedin_post_comment or linkedin_post_react, which also act on feed content, 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 Guidelines3/5

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

It states a hard prerequisite ("Exige confirm=true"), which is a usage constraint the agent must satisfy before calling. However, it gives no guidance on when to prefer this tool over the adjacent post-interaction tools, so usage is only partially covered.

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

linkedin_post_reactC

Reacciona a una publicación. Exige confirm=true.

ParametersJSON Schema
NameRequiredDescriptionDefault
confirmNo
postUrlYes
reactionNo

TDQS

C2.7/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 the full behavioral burden, and it discloses only that confirm=true is mandatory. It says nothing about the fact that reactions are public and visible to the post author, whether they can be undone, or the session/auth requirements implied by the many login/session siblings.

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?

Two short sentences, with the core action stated first and the confirm requirement second; no filler. It is efficient, though the extreme brevity trades away information rather than compacting it.

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?

For a mutation tool with no annotations, no output schema, and 0% schema description coverage, the description is too thin. An agent needs to know the postUrl format, the reaction default, and the public/irreversible nature of publishing a reaction, none of which is present.

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 explain the three parameters. It clarifies that confirm must be true but says nothing about the required postUrl format or which reaction value applies by default versus the enumerated options (like, celebrate, support, etc.), leaving two of three parameters undocumented.

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?

States a specific verb and resource ('Reacciona a una publicación'), so the agent immediately knows this adds a reaction to a post. It is distinguishable in substance from siblings like linkedin_post_comment or linkedin_posts_read, but the description never names those siblings or explicitly contrasts itself with them, so differentiation is left to the agent.

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 only usage instruction is 'Exige confirm=true', a prerequisite rather than guidance about when to choose this tool. There is no mention of when to react versus comment, create, or follow, nor any condition or exclusion to route the agent correctly.

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

linkedin_posts_readC

Lee publicaciones del feed ("feed") o la actividad reciente de un perfil.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNo
sourceNo"feed" (por defecto) o URL/identificador de un perfil.

TDQS

C2.7/5.0
Behavior2/5

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

With no annotations, the description carries the full behavioral burden, yet it only implies a read via 'Lee'. It says nothing about authentication/session requirements, rate limits, pagination, result ordering, or what happens when a profile identifier is invalid — all relevant for a scraper-style tool.

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?

A single front-loaded sentence with no filler. It is efficient, though the extreme brevity edges toward under-specification rather than genuine conciseness.

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?

For a 2-parameter tool with no annotations and no output schema, the description should explain return shape, pagination, and the meaning of 'limit', but it does none of these. It leaves core operational questions unanswered.

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 coverage is only 50%: 'source' is documented in the schema, but 'limit' (1-50) is undocumented everywhere, and the description repeats the feed/profile distinction already present in the schema. It fails to compensate for the coverage gap by explaining what 'limit' bounds.

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?

States a specific verb ('Lee') and resource ('publicaciones') and clarifies the two scopes it covers: the feed or a profile's recent activity. This is clear and interpretable, but it never distinguishes itself from nearby siblings like linkedin_profile_read or linkedin_profile_sections, so an agent must infer the boundary.

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?

It names the two data sources (feed vs profile activity) but gives no when-to-use guidance, no prerequisites, and no routing against alternatives such as linkedin_profile_read or linkedin_browser_snapshot. The agent is left to guess which reading tool to pick.

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

linkedin_profile_aboutC

Reescribe la sección "Acerca de".

ParametersJSON Schema
NameRequiredDescriptionDefault
saveNo
textYes

TDQS

C2.6/5.0
Behavior2/5

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

With no annotations, the description carries the full behavioral burden, yet it only says the About section is rewritten. It does not disclose that a write only happens conditionally via a separate 'save' flag, whether publishing is live/irreversible, what happens to existing About content, or any auth/rate-limit requirements.

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?

It is a single front-loaded sentence with zero filler, which is structurally clean. However, the extreme brevity comes at the cost of substance rather than from efficient packing of information.

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?

For a profile-mutating tool with no annotations, no output schema, and 0% parameter coverage, the description leaves critical gaps: the effect on live profile data, the role of the 'save' flag, and the content length limit. It is not adequate for an agent to call this tool safely.

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 schema documents neither parameter. The description likewise says nothing about 'text' (the new content, max 2600 chars) or 'save' (whether changes are persisted), leaving the most consequential parameter, the save toggle, completely unexplained.

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 names a specific verb ('Reescribe') and a specific resource (the 'Acerca de'/About section), which lets an agent distinguish it from headline, image, or custom-URL siblings. It is clear but does not differentiate itself from a general sibling like linkedin_profile_edit, and it doesn't clarify whether 'rewrite' means generate-and-replace or merely update stored text.

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 statement of when to use this tool versus linkedin_profile_edit or linkedin_profile_read, and no prerequisites (login/session state) are mentioned. The single sentence implies an editing action but gives the agent nothing to route on.

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

linkedin_profile_custom_urlC

Cambia la URL personalizada del perfil (linkedin.com/in/loquesea).

ParametersJSON Schema
NameRequiredDescriptionDefault
vanityYes

TDQS

C2.9/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 the full behavioral burden, and it discloses almost nothing. For a mutation of an account-visible identifier, it omits whether the change is reversible, whether LinkedIn imposes change limits, whether the old URL stops resolving, and what error occurs if the slug is taken.

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?

A single front-loaded sentence that identifies the action and the target field with zero filler. It is efficient, though the brevity comes at the cost of the missing behavioral detail noted elsewhere.

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?

With no annotations, no output schema, and an undocumented parameter, the description is the only source of context and it supplies just one sentence. For a profile-mutating tool it should at minimum cover the session prerequisite and the consequence/irreversibility of changing the public profile URL.

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 0% and the single parameter 'vanity' carries no schema documentation, but the description's example '(linkedin.com/in/loquesea)' clarifies that the value is the slug portion rather than a full URL, which is genuinely useful disambiguation. It still adds no guidance on allowed characters or the 3-100 length bounds.

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 verb 'Cambia' plus the resource 'URL personalizada del perfil' is specific, and the parenthetical example (linkedin.com/in/loquesea) pins down exactly which profile field is affected. It is distinguishable from sibling tools like linkedin_profile_edit or linkedin_profile_headline, though it never explicitly contrasts itself with them.

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 states only what the tool does, with no when-to-use guidance, no mention of adjacent tools (e.g. linkedin_profile_edit), and no prerequisites such as needing an active session. The agent must infer that this is the tool for the vanity-slug field specifically.

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

linkedin_profile_editA

Rellena una sección del perfil y opcionalmente la guarda. Los campos se identifican por su etiqueta visible (admite coincidencia parcial). Con save=false deja el formulario abierto y relleno para que lo revises: es lo recomendado la primera vez.

ParametersJSON Schema
NameRequiredDescriptionDefault
saveNotrue para guardar. Por defecto false (solo rellena).
valuesYesEtiqueta → valor. Ejemplo: {"Cargo": "Ingeniero de datos", "Empresa": "ACME"}
sectionYesUna de: intro, about, experience, education, skill, certification, project, language, course, honor, publication, organization, patent, contactInfo, openToWork

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 must carry the full behavioral burden, and it contributes one genuinely useful trait: save=false leaves the form open and filled for review, plus partial label matching. It omits other important mutation behavior such as auth requirements, whether save=true overwrites existing content, or failure handling.

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, front-loaded with the purpose, followed by the label-matching rule and the save recommendation. Every sentence adds distinct information with no filler.

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 mutation tool with a nested object and no output schema, the description explains the fill-vs-save model but omits what happens after a successful save (navigation, confirmation, errors). The rich schema compensates partially, but the behavioral picture is not fully closed.

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

Parameters4/5

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

Schema coverage is 100%, so the baseline is 3, but the description adds meaning beyond the schema: keys of the values object resolve by visible label and support partial matching, and the save=false behavior is spelled out as a review flow. This is useful semantics not captured in the field descriptions alone.

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?

States a specific verb+resource: 'Rellena una sección del perfil y opcionalmente la guarda', which clearly conveys a profile-section write. It does not, however, differentiate itself from overlapping siblings like linkedin_profile_headline or linkedin_profile_about, so the agent cannot tell when to prefer this generic editor.

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?

Gives a concrete recommended workflow: 'Con save=false ... es lo recomendado la primera vez', which tells the agent how to sequence a first invocation safely. It does not, however, address when to use this tool versus the dedicated sibling editors, so the selection guidance is incomplete.

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

linkedin_profile_headlineC

Cambia el titular del perfil (la línea bajo el nombre).

ParametersJSON Schema
NameRequiredDescriptionDefault
saveNo
headlineYes

TDQS

C2.7/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 behavioral burden, yet it only implies a mutation. It does not disclose whether the change is applied immediately, what the 'save' flag does, permission/auth requirements, or reversibility. For an unannotated write tool this is a significant gap.

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?

A single front-loaded sentence with zero filler, efficiently conveying the action and the target field. Its only weakness is that brevity here reflects under-specification rather than tight editing.

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?

For an unannotated mutation tool with no output schema and 0% parameter coverage, the description is too thin. It omits the meaning of 'save', validation constraints, and any environment/auth context needed to invoke the tool correctly.

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 and largely does not. It clarifies what the headline field means but says nothing about the 'save' boolean or the 220-character limit, leaving one of two parameters effectively unexplained.

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?

States a specific verb (Cambia/cambiar) and resource (el titular del perfil), and even clarifies what the headline is (the line under the name). It is clearly distinguishable from siblings like profile_about or profile_edit, though it never names or contrasts them explicitly.

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 when-to-use guidance, no prerequisites (e.g., must be logged in), and no mention of alternatives such as linkedin_profile_edit or linkedin_profile_about. The agent is left to infer everything about when this is the right tool.

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

linkedin_profile_imageC

Sube la foto de perfil o la imagen de portada.

ParametersJSON Schema
NameRequiredDescriptionDefault
kindYes
filePathYesRuta al archivo de imagen.

TDQS

C2.9/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 the full behavioral burden. It says an upload occurs but not that an existing photo is overwritten, that authentication/session is required, what image formats/sizes are accepted, or whether the operation is reversible — all significant gaps for a mutation tool.

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?

A single, front-loaded sentence with zero filler. It is efficient, though arguably under-specified rather than optimally concise for a mutation tool.

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?

For a write operation with no annotations, no output schema, and only 50% schema coverage, the description omits authentication requirements, overwrite behavior, and accepted file types. An agent cannot reliably call this without external assumptions.

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 50%: filePath is documented but the kind enum is not. The description's "foto de perfil o imagen de portada" does clarify the two enum meanings, adding real value, but it gives no format or path syntax detail beyond the schema.

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?

States a specific verb ("Sube") and resource ("foto de perfil o imagen de portada"), which maps directly onto the two enum values. It is clear what the tool does, though it offers no differentiation from siblings like linkedin_profile_edit, which could also touch profile imagery.

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 versus linkedin_profile_edit or other profile-mutating siblings, no statement of prerequisites (an active session/login), and no conditions or exclusions. The agent must infer usage entirely.

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

linkedin_profile_inspect_formA

Abre el editor de una sección y devuelve EXACTAMENTE los campos que LinkedIn muestra ahora mismo (etiqueta, tipo, si es obligatorio, opciones disponibles) sin guardar nada. Úsalo antes de editar una sección por primera vez: así los nombres de campo que pases después coinciden con los reales, aunque LinkedIn los haya cambiado.

ParametersJSON Schema
NameRequiredDescriptionDefault
sectionYesUna de: intro, about, experience, education, skill, certification, project, language, course, honor, publication, organization, patent, contactInfo, openToWork

TDQS

A4.3/5.0
Behavior4/5

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

With no annotations, the description carries the full burden, and it discloses the key behavioral trait: the editor is opened but nothing is saved, plus the exact shape of the returned data (label, type, required, options). It omits auth/session prerequisites and failure behavior, but the safety-relevant disclosure is solid.

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, with the action and the no-save constraint front-loaded before the usage instruction. Every clause 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?

There is no output schema, so the description compensates by enumerating the returned fields, and it explains why field inspection matters (matching LinkedIn's current field names). Nothing essential for correct invocation is missing.

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

Parameters3/5

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

Schema description coverage is 100% and the only parameter (section) is documented with its allowed values, so the schema does the work. The description adds no extra meaning about the parameter itself, making the baseline 3 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?

States a specific verb and resource (opens the section editor and returns the exact current fields), and the 'sin guardar nada' clause distinguishes it functionally from the write siblings such as linkedin_profile_edit. An agent can tell what it does without opening 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 Guidelines4/5

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

Gives an explicit when-to-use rule ('Úsalo antes de editar una sección por primera vez'), which is actionable. It does not name an alternative tool or state when not to use it, so it stops short of the top mark.

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

linkedin_profile_open_to_workC

Configura "Abierto a trabajar": cargos, ubicaciones, tipos de empleo y quién puede verlo.

ParametersJSON Schema
NameRequiredDescriptionDefault
saveNo
valuesYesEjemplo: {"Cargos": "Ingeniero de datos", "Ubicaciones": "Bogotá", "Quién puede ver": "Solo responsables de selección"}

TDQS

C2.9/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 the full behavioral burden. 'Configura' implies a mutation, but the description says nothing about auth/session requirements, reversibility, what existing settings are affected, or what the 'save' flag does (preview vs persist) — a significant gap for a write tool with zero annotation coverage.

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?

A single, efficient sentence with the resource and its fields front-loaded and no wasted words. It is appropriately sized, though it is arguably too terse given the tool's mutation semantics.

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?

For a mutation tool with no annotations, no output schema, a nested object parameter, and an undocumented 'save' flag, the description is insufficient. An agent cannot confidently determine how the write persists or what the nested values must contain.

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 50%: the 'values' object has an example, but 'save' is undocumented in both schema and description. The description does enumerate the field keys the 'values' object expects, adding some meaning beyond the schema example, but leaves the save/persist control entirely unexplained.

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

Purpose4/5

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

The description states a specific verb ('Configura') and resource ('Abierto a trabajar') and enumerates the configurable fields (cargos, ubicaciones, tipos de empleo, quién puede verlo). It is clearly distinguishable from siblings like linkedin_profile_headline or linkedin_profile_about, though it does not explicitly name those alternatives.

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 other profile-editing siblings, nor any stated prerequisites such as an active session or login. Usage is only implied by the resource name.

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

linkedin_profile_readA

Lee un perfil completo (el propio por defecto): titular, acerca de, experiencia, educación, aptitudes, certificaciones e idiomas.

ParametersJSON Schema
NameRequiredDescriptionDefault
targetNo"me" para el propio, o una URL / identificador público como "juan-perez-123".

TDQS

A3.5/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 full behavioral burden. It discloses that this is a read operation and lists the exact fields returned, which is meaningful. It does not mention session/auth prerequisites, rate limits, or whether a public identifier requires a logged-in session, leaving real gaps.

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?

A single, front-loaded sentence that leads with the action and resource before enumerating the returned sections. Efficient with no filler, though the field enumeration makes it slightly dense.

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

Completeness4/5

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

With only one optional parameter, no annotations, and no output schema, the description compensates well by enumerating the returned sections, effectively serving as return-value documentation. It lacks only negative guidance (when not to use it) to be 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 description coverage is 100%, so the single 'target' parameter and its 'me'/URL formats are already documented in the schema. The description adds the useful default ('el propio por defecto'), but otherwise does not extend parameter meaning beyond the schema, making the baseline 3 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?

States a specific verb ('Lee') and resource ('perfil completo') and enumerates the sections returned (titular, acerca de, experiencia, educación, etc.), so an agent can tell it is a full-profile reader rather than a single-section reader. It does not explicitly name the sibling it differs from (e.g., linkedin_profile_sections), so it falls 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 Guidelines3/5

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

The parenthetical 'el propio por defecto' tells the agent the default target is the authenticated user's own profile, which is useful invocation context. However, there is no explicit when-to-use-vs-alternatives guidance, e.g., when to call this versus linkedin_profile_sections or the narrower linkedin_profile_headline/about tools.

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

linkedin_profile_sectionsA

Lista las secciones del perfil que se pueden editar, con los campos habituales de cada una.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A3.5/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 full disclosure burden. It conveys the returned content (editable sections and their typical fields) and implies a read-only enumeration, but says nothing about login/session requirements, whether it reflects live profile state, or rate/latency behavior.

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?

A single compact sentence with zero filler and the core purpose front-loaded. It is appropriately sized for a zero-parameter discovery tool, though it could be marginally more explicit about scope.

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?

With no output schema and no annotations, the description is the sole source of return-value information, and it only roughly sketches the shape ('sections...with usual fields'). It is adequate for a simple enumerator but leaves the exact output structure and any prerequisites underspecified.

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 takes zero parameters, so there is nothing for the description to compensate for; the baseline is 4. The description correctly indicates no input is required to enumerate the sections.

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?

States a specific verb ('Lista') and resource (profile sections) plus the payload content (usual fields per section). It is distinguishable from pure readers like linkedin_profile_read and mutators like linkedin_profile_edit, though it does not explicitly name those siblings as alternatives.

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?

No explicit when-to-use or when-not-to-use is given, but the 'sections that can be edited' framing implies it is a discovery step before editing. The agent must infer that this is a precursor to the profile_edit family rather than being told.

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

linkedin_session_cookiesA

Exporta las cookies de la sesión a un archivo, o importa un li_at/JSESSIONID obtenido del navegador personal. Útil para respaldar la sesión o para arrancar sin pasar por el login.

ParametersJSON Schema
NameRequiredDescriptionDefault
liAtNoValor de la cookie li_at (solo para import).
actionYes
filePathNoRuta del archivo JSON de cookies.
jsessionidNoValor de la cookie JSESSIONID (solo para import).

TDQS

A3.6/5.0
Behavior3/5

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

With no annotations, the description carries the full burden. It usefully discloses that import consumes a li_at/JSESSIONID from the personal browser and that this lets the session start without login, but says nothing about permission requirements, what happens to an existing session on import, or the sensitivity/storage risks of exported cookies.

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?

Two tight sentences, front-loading the export/import duality before the use case. Little waste, though the 'útil para' clause is somewhat soft.

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?

No output schema and no annotations, so the description must stand alone; it explains the two actions and their rationale but omits return/error behavior and any file-format guidance beyond what the schema implies. Adequate but with clear gaps for a session-credential 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 75% and the schema already documents liAt, jsessionid and filePath. The description reinforces that li_at/JSESSIONID are import-only and originate from the personal browser, but adds no format or constraint detail beyond the schema, so baseline 3 applies.

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?

States specific verbs (export/import) on a specific resource (session cookies), and its purpose is clearly distinct from siblings like linkedin_login and linkedin_session_status. It does not explicitly name those siblings, so it stops short of full differentiation.

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?

Gives clear use cases: backing up the session or starting without going through login. It tells the agent when this is the right tool, though it names no alternatives or exclusions (e.g. when to prefer linkedin_login instead).

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

linkedin_session_statusA

Comprueba si hay sesión de LinkedIn activa en el navegador persistente. Devuelve el nombre, el identificador público y cuándo caduca la cookie. Llama a esto antes que nada.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A4.1/5.0
Behavior4/5

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

With no annotations, the description carries the burden and does well: it discloses that the session lives in a persistent browser and enumerates the return payload (name, public identifier, cookie expiry). It does not say how a missing/expired session is surfaced (error vs. empty result), which is the remaining gap.

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, no wasted words. The purpose leads, the return values follow, and the caller instruction is last — a well-ordered, front-loaded block.

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 no-parameter status probe with no output schema, the description covers purpose, payload, and call ordering adequately. The only omission is the failure/absent-session behaviour an agent would need to branch on.

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 takes zero parameters, so there is nothing to document and the baseline of 4 applies. The description correctly adds no parameter noise.

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?

States a specific verb and resource: it checks whether an active LinkedIn session exists in the persistent browser. It also names the returned fields, making the read-only nature unmistakable, though it does not explicitly distinguish itself from neighbours like linkedin_login or linkedin_session_cookies.

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?

"Llama a esto antes que nada" gives explicit ordering guidance — call it first, before any authenticated action. It stops short of naming alternatives or stating what to do if no session is found, so it is clear context without full exclusion logic.

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

linkedin_usageB

Muestra cuántas acciones llevas hoy frente a los topes diarios, y el registro de interacciones.

ParametersJSON Schema
NameRequiredDescriptionDefault
showOutreachNo

TDQS

B3/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 full burden. It discloses the returned content (today's action counts vs daily caps, plus an interaction log), which implies a read-only status operation, but it never states there are no side effects, nor mentions auth or rate-limit behavior.

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?

A single well-formed sentence with the resource reported front-loaded and no filler. It could still be slightly tightened or split to separate the counts from the interaction log, but it is efficient.

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 read-only usage tool with one optional parameter and no output schema, the description covers the return content adequately. It is incomplete regarding the meaning of 'showOutreach' and any behavioral side effects, which an agent would need.

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% and the single parameter 'showOutreach' is entirely undocumented in both schema and description. The description does not compensate for this gap, leaving the agent unable to know what the flag controls.

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?

States a specific verb ('Muestra') and resource (daily action counts against daily limits plus the interaction log), so the tool's purpose is clear. It does not, however, explicitly distinguish itself from siblings like linkedin_applications_log or linkedin_session_status, which is why it falls 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 explains what the tool reports but gives no explicit when-to-use, when-not-to-use, or alternative. The reader can infer it is for checking remaining daily capacity, but nothing states that or names a sibling instead.

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

linkedin_voyager_requestA

Llamada directa a la API interna de LinkedIn (Voyager) reutilizando la sesión del navegador. Atajo avanzado para leer datos que la interfaz no expone cómodamente. No es una API pública: las rutas cambian sin aviso, así que trata los fallos como normales y usa las otras herramientas.

ParametersJSON Schema
NameRequiredDescriptionDefault
bodyNo
pathYesRuta relativa, por ejemplo "me" o "identity/dash/profiles?q=..."
methodNo

TDQS

A3.9/5.0
Behavior4/5

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

With no annotations, the description carries the full load and does disclose meaningful behavior: it reuses the browser session, is not a public API, routes change without warning, and failures should be treated as normal. It omits auth/session prerequisites and the fact that the method enum permits destructive writes (DELETE/PUT), but the fragility and error-tolerance disclosure is genuinely valuable.

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

Conciseness4/5

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

Three tight sentences that front-load the core purpose before the caveats. No filler, though the caveat sentences could be marginally compressed.

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?

No annotations and no output schema, so the description must do more, and it does warn about volatility and error handling. However, it never covers the write capability implied by POST/PUT/DELETE (it frames the tool as 'para leer datos'), return format, or parameter meaning, leaving gaps for a 3-parameter request tool.

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 coverage is only 33% – only 'path' is described – and the description adds nothing about parameter semantics. It never explains the path format, the meaning of 'method' variants, or the shape of 'body', leaving 'body' and 'method' essentially undocumented.

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 and resource ('Llamada directa a la API interna de LinkedIn (Voyager) reutilizando la sesión del navegador'), which is unambiguous. It positions itself as the low-level escape hatch versus the many higher-level siblings by calling itself an 'atajo avanzado' for data the UI doesn't expose comfortably.

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?

It gives a clear condition for use (reading data the interface doesn't expose comfortably) and a fallback ('usa las otras herramientas') when the call fails. It stops short of naming specific alternatives or exclusions beyond 'the other tools', so it falls just below fully explicit guidance.

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. 39 tool updatesv1.0.0
    • First observedlinkedin_answers_bank
    • First observedlinkedin_applications_log
    • First observedlinkedin_browser_click
    • First observedlinkedin_browser_navigate
    • First observedlinkedin_browser_screenshot
    • First observedlinkedin_browser_scroll
    • First observedlinkedin_browser_snapshot
    • First observedlinkedin_browser_type
    • First observedlinkedin_close_browser
    • First observedlinkedin_connect
    • First observedlinkedin_endorse
    • First observedlinkedin_follow
    • First observedlinkedin_invitations
    • First observedlinkedin_job_apply
    • First observedlinkedin_job_detail
    • First observedlinkedin_job_save
    • First observedlinkedin_jobs_search
    • First observedlinkedin_login
    • First observedlinkedin_message
    • First observedlinkedin_my_jobs
    • First observedlinkedin_notifications
    • First observedlinkedin_people_search
    • First observedlinkedin_post_comment
    • First observedlinkedin_post_create
    • First observedlinkedin_post_react
    • First observedlinkedin_posts_read
    • First observedlinkedin_profile_about
    • First observedlinkedin_profile_custom_url
    • First observedlinkedin_profile_edit
    • First observedlinkedin_profile_headline
    • First observedlinkedin_profile_image
    • First observedlinkedin_profile_inspect_form
    • First observedlinkedin_profile_open_to_work
    • First observedlinkedin_profile_read
    • First observedlinkedin_profile_sections
    • First observedlinkedin_session_cookies
    • First observedlinkedin_session_status
    • First observedlinkedin_usage
    • First observedlinkedin_voyager_request

TDQS

C2.9/5.0

Scored across 39 tools

Disambiguation4/5

Most tools have clearly distinct resource+action purposes, and the high-level vs. browser-primitive vs. Voyager boundaries are usually clear. However, the generic profile_edit overlaps with specific wrappers like profile_headline, profile_about, profile_image, and profile_open_to_work, so an agent could reasonably choose either path for the same outcome.

Naming Consistency4/5

All tools use snake_case with a consistent linkedin_ prefix, making the set predictable overall. Minor deviations exist, such as linkedin_posts_read (plural) versus linkedin_post_create/react/comment (singular), and linkedin_jobs_search versus linkedin_job_detail/apply/save.

Tool Count2/5

With 39 tools, the set is well beyond the 25+ threshold that typically signals excessive surface area. While the domain is broad, several convenience wrappers and low-level browser primitives could be consolidated or exposed through fewer generic tools without losing core capability.

Completeness4/5

Core workflows are well covered: session management, profile editing, people search/connect/message, post interaction, job search/apply/save, usage monitoring, and low-level browser fallbacks. The notable gap is reading or managing the message inbox/conversations, though browser_snapshot/navigate and voyager_request provide workarounds.

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