智睦云打印
OfficialMCP de Impresión en la Nube ZhiMu
webprinter_mcp es un servidor MCP para impresión en la nube.
Si tu cliente MCP admite el tipo stdio, puedes usarlo para subir archivos, consultar impresoras, enviar tareas de impresión e imprimir directamente.
¿Qué puede hacer por ti?
Puedes entenderlo como una "herramienta que te ayuda a gestionar tareas de impresión".
Por ejemplo, puedes decirle a una IA conectada a este MCP:
"Ayúdame a ver si hay impresoras disponibles ahora"
"Sube este archivo, prepáralo para imprimir"
"Añade este archivo a la cola de impresión"
"Imprime directamente en la impresora de la oficina"
"Cambia la tarea anterior a doble cara"
Related MCP server: Memobird MCP Server
Preparación antes de usar
Primero debes instalar el servidor de impresión en la nube ZhiMu y compartir la impresora. Obtén el paquete de instalación desde la impresión en la nube ZhiMu:
https://any.webprinter.cn
Luego, necesitas obtener un token de acceso a la impresión en la nube.
Dirección de obtención:
[https://any.webprinter.cn/get-ai-server-token](https://any.webprinter.cn/get-ai-server-token)
Después de obtener el token, configura la variable de entorno:
WEBPRINTER_ACCESS_TOKEN: Obligatorio
Instalación
Instalación mediante pip
pip install webprinter_mcpO instalación desde el código fuente
pip install .Método de inicio
Si solo quieres confirmar que se puede iniciar localmente, puedes ejecutar:
webprinter_mcpO:
python -m webprinter_mcpNota: Después de iniciar este comando, normalmente no imprimirá mensajes de aviso de forma activa. Entrará en un estado de espera de conexión del cliente MCP, lo cual es normal.
Cómo configurar en el cliente MCP
Este proyecto es más adecuado para conectarse mediante stdio.
Método Python local
Si ya has instalado este paquete en tu máquina, se recomienda configurarlo así:
{
"type": "stdio",
"config": {
"mcpServers": {
"webprinter": {
"type": "stdio",
"command": "webprinter_mcp",
"args": [],
"env": {
"WEBPRINTER_ACCESS_TOKEN": "your-access-token"
}
}
}
}
}Método npx
Si tu cliente admite el estilo npx, también puedes configurarlo así:
{
"type": "stdio",
"config": {
"mcpServers": {
"webprinter": {
"type": "npx",
"command": "npx",
"args": ["-y", "webprinter_mcp"],
"env": {
"WEBPRINTER_ACCESS_TOKEN": "your-access-token"
}
}
}
}
}Nota: Si usas npx webprinter_mcp, aún necesitas tener un entorno de ejecución de Python disponible en tu máquina.
Uso directo de la configuración mcpServers
Si tu cliente MCP acepta directamente la estructura mcpServers, puedes usar la siguiente configuración:
{
"mcpServers": {
"webprinter": {
"args": [
"-y",
"webprinter_mcp"
],
"command": "npx",
"env": {
"WEBPRINTER_ACCESS_TOKEN": "your-access-token"
},
"type": "npx"
}
}
}Donde:
WEBPRINTER_ACCESS_TOKENDebe obtenerse primero desde
https://any.webprinter.cn/get-ai-server-token
commandyargsIndican iniciar el servidor MCP a través de
npx webprinter_mcp
typeIndica que el cliente actual utiliza el método
npxpara conectarse
Lista de herramientas
El servidor MCP actual proporciona las siguientes herramientas:
check_install_progressComprueba si la cuenta y el entorno del dispositivo tienen capacidad de impresión en la nube
query_printersConsulta la lista de impresoras disponibles para la cuenta actual
query_printer_detailConsulta información detallada sobre las capacidades de una impresora o dispositivo compartido específico
upload_fileSube un archivo local y devuelve una dirección pública utilizable para imprimir
create_roaming_taskCrea una tarea de impresión en itinerancia basada en la URL del archivo
update_printer_sideModifica la configuración de una o dos caras de la tarea de impresión en itinerancia
update_printer_colorModifica la configuración de color/blanco y negro de la tarea de impresión en itinerancia
update_printer_copiesModifica el número de copias de la tarea de impresión en itinerancia
update_printer_paperModifica el tamaño de papel de la tarea de impresión en itinerancia, admite tamaños preestablecidos como
A3,A4, etc., y también admite ancho y alto personalizados
direct_print_documentEnvía el archivo directamente a la impresora especificada para imprimir
Puedes entenderlo como un conjunto completo de capacidades de flujo de impresión:
Primero verifica el entorno:
check_install_progressLuego revisa las impresoras:
query_printers/query_printer_detailSube el archivo:
upload_fileCrea la impresión en itinerancia:
create_roaming_taskAjusta los parámetros de la tarea según sea necesario:
update_printer_side/update_printer_color/update_printer_copies/update_printer_paperO imprime directamente:
direct_print_document
Descripción de las herramientas
A continuación, se explica cada herramienta según "propósito, comportamiento, parámetros clave, sugerencias de uso", para facilitar su visualización en plataformas MCP, directorios y documentación de integración.
check_install_progress
Propósito
Comprobar si la cuenta actual, el cliente y el entorno de impresión tienen capacidades de impresión en la nube disponibles
Cuándo usarlo
Llamar primero al realizar la integración inicial
Llamar prioritariamente cuando no se pueda imprimir, no se encuentren impresoras o falle el envío de tareas
Comportamiento
Consulta el estado actual de instalación y configuración en la plataforma de impresión en la nube
No modifica ninguna tarea de impresión
Parámetros
Ninguno
Resultado devuelto
Devuelve el resultado de la comprobación del entorno actual, generalmente utilizado para determinar si la configuración del cliente, dispositivo o compartido está completa
Sugerencias de uso
Se recomienda como el primer paso de todo flujo de impresión
Ejemplo de frase
"Comprueba primero si el entorno actual puede usar la impresión en la nube"
query_printers
Propósito
Consultar la lista de impresoras disponibles bajo la cuenta actual
Cuándo usarlo
Cuando el usuario quiera ver las impresoras disponibles
Cuando se quiera confirmar si la impresora de destino existe antes de imprimir directamente
Comportamiento
Devuelve la lista de impresoras
Las impresoras ocultas se marcarán como compatibles solo con tareas de itinerancia
Parámetros
Ninguno
Resultado devuelto
Los campos comunes incluyen nombre de la impresora, alias, estado en línea, número de control, si está oculta, etc.
Sugerencias de uso
Si el usuario dice "imprimir en cierta impresora", se recomienda llamar primero a esta herramienta para confirmar el nombre del dispositivo y el número de control
Ejemplo de frase
"Ayúdame a ver qué impresoras hay disponibles actualmente"
query_printer_detail
Propósito
Consultar información detallada sobre las capacidades de una impresora o dispositivo compartido
Cuándo usarlo
Cuando el usuario necesite confirmar las capacidades admitidas por el dispositivo
Cuando se quiera confirmar el tipo de dispositivo, número de compartido o parámetros detallados antes de imprimir
Comportamiento
Devuelve información detallada según el nombre de la impresora, número de compartido o tipo de dispositivo
Parámetros
printer_nameNombre de la impresora, opcional
share_snNúmero de dispositivo compartido, opcional
device_typeTipo de dispositivo, opcional, admite
printer,scanner,camera
Resultado devuelto
Devuelve las capacidades detalladas o datos de configuración del dispositivo especificado
Sugerencias de uso
Proporciona al menos un criterio de filtro para evitar que el alcance de la consulta sea demasiado amplio
Ejemplo de frase
"Ayúdame a ver qué capacidades admite la impresora de la recepción"
upload_file
Propósito
Subir un archivo local y obtener una URL pública utilizable para la impresión posterior
Cuándo usarlo
Cuando el archivo de origen está en el disco local
Cuando aún no hay una dirección de archivo pública antes de la impresión en itinerancia o directa
Comportamiento
Lee el archivo local y lo sube a la nube
Devuelve una dirección de archivo que puede ser leída por el servicio de impresión
Parámetros
file_pathRuta del archivo local, obligatorio
Resultado devuelto
Devuelve la información del archivo subido y la dirección accesible
Sugerencias de uso
Si el archivo ya es una URL pública, puedes omitir este paso
Ejemplo de frase
"Sube el PDF que está en mi escritorio y dame una dirección imprimible"
create_roaming_task
Propósito
Crear una tarea de impresión en itinerancia para que el archivo entre en la cola de impresión a la espera de procesamiento posterior
Cuándo usarlo
Cuando el usuario quiera generar primero una tarea de impresión en lugar de imprimir inmediatamente en un dispositivo específico
Comportamiento
Crea una tarea de impresión en itinerancia basada en el nombre del archivo, la URL del archivo y el tipo de archivo
Devuelve el ID de la tarea tras el éxito
Parámetros
file_nameNombre de visualización del archivo, obligatorio
urlDirección pública del archivo, obligatorio
media_formatFormato del archivo, obligatorio, admite
PDF,PNG,JPG,WORD,EXCEL,PPT, etc.
Resultado devuelto
Devuelve el ID de la tarea de itinerancia recién creada
Sugerencias de uso
Si posteriormente deseas cambiar una o dos caras, color, copias o papel, necesitarás este ID de tarea
Ejemplo de frase
"Envía este archivo como una tarea de impresión en itinerancia"
update_printer_side
Propósito
Modificar la configuración de una o dos caras de la tarea de impresión en itinerancia
Cuándo usarlo
Cuando el usuario especifique claramente una cara, dos caras, volteo por borde largo o volteo por borde corto
Comportamiento
Actualiza la configuración de cara de impresión de la tarea según el ID de la tarea
Parámetros
task_idID de la tarea de itinerancia, obligatorio
sideValores opcionales:
ONESIDE,DUPLEX,TUMBLE
Resultado devuelto
Devuelve el resultado de la actualización
Sugerencias de uso
Aplicable a tareas de itinerancia ya creadas, no para tareas de impresión directa
Ejemplo de frase
"Cambia la tarea 123 a impresión a doble cara"
update_printer_color
Propósito
Modificar el modo de color de la tarea de impresión en itinerancia
Cuándo usarlo
Cuando el usuario especifique claramente impresión en color, blanco y negro o escala de grises
Comportamiento
Actualiza el modo de color según el ID de la tarea
Parámetros
task_idID de la tarea de itinerancia, obligatorio
colorValores opcionales:
COLOR,MONOCHROME
Resultado devuelto
Devuelve el resultado de la actualización
Sugerencias de uso
Cuando el usuario diga "impresión en blanco y negro", debe convertirse a
MONOCHROME
Ejemplo de frase
"Cambia la tarea 123 a impresión en blanco y negro"
update_printer_copies
Propósito
Modificar el número de copias de la tarea de impresión en itinerancia
Cuándo usarlo
Cuando el usuario diga "imprimir 2 copias", "imprimir 3 copias"
Comportamiento
Actualiza el número de copias según el ID de la tarea
Parámetros
task_idID de la tarea de itinerancia, obligatorio
copiesNúmero de copias, obligatorio, y debe ser mayor o igual a
1
Resultado devuelto
Devuelve el resultado de la actualización
Sugerencias de uso
Si el usuario no especifica el número de copias, no lo modifiques arbitrariamente
Ejemplo de frase
"Cambia la tarea 123 a imprimir 3 copias"
update_printer_paper
Propósito
Modificar el tamaño de papel de la tarea de impresión en itinerancia
Cuándo usarlo
Cuando el usuario mencione tamaños de papel como A3, A4, A5, Letter, etc.
Cuando el usuario proporcione directamente el ancho y el alto
Comportamiento
Admite la conversión automática de nombres de papel estándar a ancho y alto en milímetros
También admite pasar directamente
widthyheightpersonalizados
Parámetros
task_idID de la tarea de itinerancia, obligatorio
paperPuede pasar el nombre del tamaño de papel, como
A4También puede pasar un objeto, como
{"width": 210, "height": 297}
Resultado devuelto
Devuelve el resultado de la actualización
Sugerencias de uso
La unidad de ancho y alto es milímetros
Los preajustes admitidos actualmente incluyen
A0-A6,B4,B5,LETTER,LEGAL,TABLOID
Ejemplo de frase
"Cambia la tarea 123 a papel A4"
"Cambia la tarea 123 a papel de 210 de ancho y 297 de alto"
direct_print_document
Propósito
Enviar el archivo directamente a la impresora especificada
Cuándo usarlo
Cuando el usuario especifique claramente que quiere imprimir inmediatamente en una impresora determinada
Comportamiento
Inicia la impresión directamente según la información del archivo y la información del dispositivo de destino
Si la impresora de destino es una impresora oculta, se bloqueará la impresión directa y se sugerirá usar una tarea de itinerancia
Parámetros
file_nameNombre de visualización del archivo, obligatorio
urlDirección pública del archivo, obligatorio
media_formatFormato del archivo, obligatorio
device_nameNombre de la impresora de destino, obligatorio
control_snNúmero de control de la impresora de destino, obligatorio
Resultado devuelto
Devuelve el resultado de la impresión directa
Sugerencias de uso
Se recomienda llamar primero a
query_printerspara confirmar el nombre de la impresora de destino y el número de controlSi es un archivo local, llama primero a
upload_file
Ejemplo de frase
"Imprime este archivo directamente en la impresora de la recepción"
Sugerencias para la primera integración
Al usarlo por primera vez, se recomienda seguir estos pasos:
Primero comprueba si la cuenta actual cumple las condiciones de impresión en la nube
Puedes entenderlo así:
"Ayúdame a comprobar primero si el entorno actual puede usar la impresión en la nube normalmente"
Si el resultado indica que el cliente o el dispositivo no están listos, completa primero la instalación y la configuración de compartido en el lado de WebPrinter.
Luego haz que liste las impresoras disponibles actualmente
Puedes decir:
"Ayúdame a ver qué impresoras hay ahora"
Este paso suele devolver:
Nombre de la impresora
Alias de la impresora
Estado en línea
Número de control
Si tienes archivos locales, súbelos primero
Puedes entenderlo como:
"Sube este PDF local y dame una dirección imprimible"
Al depurar localmente, los parámetros comunes se ven así:
{
"file_path": "C:\\\\docs\\\\report.pdf"
}Luego decide si es "impresión en itinerancia" o "impresión directa"
Si solo quieres entrar en la cola de impresión, puedes entenderlo así:
"Envía este archivo a impresión en itinerancia" o
"Añade este archivo a la cola de impresión"
Si quieres imprimir inmediatamente en una impresora, puedes entenderlo así:
"Imprime este archivo directamente en la impresora HP de la oficina"
Ejemplos de uso más coloquiales
Las siguientes frases son adecuadas para que este MCP las procese:
"Ayúdame a comprobar si el entorno de impresión en la nube actual funciona"
"Ayúdame a ver qué impresoras hay disponibles"
"Sube el PDF que está en mi escritorio"
"Añade esta página web a la cola de impresión"
"Imprime directamente en la impresora de la recepción"
"Cambia la tarea anterior a doble cara"
Preguntas frecuentes
¿Por qué no hay respuesta después de ejecutar webprinter_mcp?
Esto es normal.
Después de iniciarse, esperará continuamente a que el cliente MCP se conecte a través de stdio, no imprimirá mucha información inmediatamente como las herramientas de línea de comandos normales.
¿Qué hacer si aparece un error relacionado con el token al iniciar?
Por favor, ve aquí para obtener el token:
[https://get-ai-token.webprinter.cn](https://any.webprinter.cn/get-ai-server-token)
Luego confirma que has configurado:
WEBPRINTER_ACCESS_TOKEN
El comando ya está instalado, pero no se encuentra webprinter_mcp
Normalmente es porque el directorio Scripts de Python aún no se ha añadido al PATH.
En este caso, puedes usar directamente:
python -m webprinter_mcpHerramientas de configuración de tareas
Para las tareas de impresión en itinerancia ya creadas, ahora puedes seguir modificando las siguientes configuraciones:
update_printer_side(task_id, side)update_printer_color(task_id, color)update_printer_copies(task_id, copies)update_printer_paper(task_id, paper)
Descripción de parámetros
task_idID de la tarea de impresión en itinerancia
sideValores opcionales:
ONESIDE,DUPLEX,TUMBLESignifican respectivamente: una cara, doble cara con volteo por borde largo, doble cara con volteo por borde corto
colorValores opcionales:
COLOR,MONOCHROMESignifican respectivamente: color, blanco y negro
copiesEntero
Debe ser mayor o igual a
1
paperPuedes pasar directamente el nombre del tipo de papel, como
A3,A4,A5,LETTERTambién puedes pasar un objeto personalizado:
{"width": 210, "height": 297}La unidad de ancho y alto es milímetros
Ejemplos de uso
Si estás llamando a través de lenguaje natural en el cliente MCP, puedes decir:
"Cambia la tarea
123a impresión a doble cara""Cambia la tarea
123a impresión en blanco y negro""Cambia la tarea
123a imprimir 3 copias""Cambia la tarea
123a papel A4""Cambia la tarea
123a papel de 210 de ancho y 297 de alto"
Si estás depurando en la CLI local, puedes usarlo así:
python scripts/mcp_client.py update-printer-side --task-id 123 --side DUPLEX
python scripts/mcp_client.py update-printer-color --task-id 123 --color MONOCHROME
python scripts/mcp_client.py update-printer-copies --task-id 123 --copies 3
python scripts/mcp_client.py update-printer-paper --task-id 123 --paper A4
python scripts/mcp_client.py update-printer-paper --task-id 123 --width 210 --height 297Available Tools
10 toolscheck_install_progressB
Check whether the user's cloud print environment is fully configured.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden of behavioral disclosure. While it implies a status check ('whether...fully configured'), it fails to specify the return format (boolean, percentage, list of missing components), caching behavior, or what criteria define 'fully configured.'
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, efficient sentence of nine words with no redundant information. It is appropriately front-loaded with the action verb and wastes no space on tautological restatements of the tool name.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given zero parameters and no output schema, the description is minimally adequate for tool selection but leaves significant gaps. It does not explain what constitutes 'fully configured,' what the response structure looks like, or how this relates to the sibling printer management tools, which would be valuable given the lack of structured metadata.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema has zero parameters, which per the scoring rules establishes a baseline of 4. There are no parameters requiring semantic explanation beyond what the schema (empty properties object) already conveys.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses the specific verb 'Check' and identifies the resource 'user's cloud print environment' with the scope 'fully configured.' It distinguishes from siblings like query_printers (which lists specific printers) by focusing on overall environment configuration status rather than individual device queries.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description states what the tool does but provides no guidance on when to use it versus alternatives. It does not indicate whether this should be called before other operations, how it relates to query_printers, or prerequisites for invocation.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_roaming_taskC
Create a roaming print task from a public document URL.
| Name | Required | Description | Default |
|---|---|---|---|
| file_name | Yes | ||
| url | Yes | ||
| media_format | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure. It adds the constraint that the URL must be 'public,' but fails to disclose whether the operation is asynchronous, what the return value is (likely a task ID given the 'create task' naming), or how to check task status. It does not indicate if the operation is destructive or idempotent.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single efficient sentence with no redundancy. However, given that all three parameters lack schema descriptions and no annotations exist, the description is underspecified. It prioritizes brevity over necessary detail, making it 'too concise' for the complexity of the tool.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a mutation tool with three undocumented parameters, no annotations, and no output schema, the description is insufficient. It lacks guidance on the 'roaming' workflow, expected 'media_format' values, the purpose of 'file_name' when a URL is provided, and how to interpret or use the return value (presumably a task identifier).
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema has 0% description coverage for all three parameters (file_name, url, media_format). The description only partially compensates by implying the 'url' parameter requires a public document URL. It completely omits explanation of 'file_name' (is it a destination name or metadata?) and 'media_format' (expected values like 'A4', 'Letter', 'PDF'?).
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb ('Create') and resource ('roaming print task'), and includes the source ('public document URL'). The term 'roaming' helps distinguish it from the sibling 'direct_print_document', though it could further clarify what 'roaming' implies in this context.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus siblings like 'direct_print_document' or 'upload_file'. It mentions 'public document URL' which hints at a requirement, but does not explicitly state selection criteria or prerequisites for using this specific tool.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
direct_print_documentC
Send a document directly to a specific printer.
| Name | Required | Description | Default |
|---|---|---|---|
| file_name | Yes | ||
| url | Yes | ||
| media_format | Yes | ||
| device_name | Yes | ||
| control_sn | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, and the description adds zero behavioral context. It does not disclose whether the operation is synchronous, what happens if the printer is offline, required permissions, or what the return value indicates (no output schema exists).
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single efficient sentence with no redundancy. However, given the high parameter complexity and lack of schema documentation, this brevity represents under-specification rather than appropriate conciseness.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a tool with 5 undocumented required parameters, no annotations, and no output schema, the description is severely incomplete. It establishes the core action but leaves the agent without sufficient information to correctly populate parameters or handle responses.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
With 0% schema description coverage across 5 required parameters, the description completely fails to compensate. Critical semantic gaps remain unresolved: the distinction between device_name and control_sn, valid media_format values, and whether url requires a specific protocol.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool sends a document to a specific printer, distinguishing it from sibling tools that query printer details (query_printer_detail) or update settings (update_printer_*). However, it uses 'Send' rather than 'Print', which slightly weakens the specific action intent.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus upload_file (a sibling tool) or whether the document must be pre-uploaded. There are no prerequisites, exclusions, or workflow context provided.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
query_printer_detailC
Query printer capabilities for a specific printer or shared device.
| Name | Required | Description | Default |
|---|---|---|---|
| printer_name | No | ||
| share_sn | No | ||
| device_type | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure. It fails to specify what 'capabilities' are returned, error handling behavior (e.g., printer not found), or whether this operation requires specific permissions. The term 'Query' implies read-only, but explicit confirmation is absent.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The single-sentence description is efficiently structured and front-loaded with the action and target. However, extreme brevity becomes a liability given the lack of schema documentation and annotations, leaving critical information unstated.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Inadequate for the tool's complexity. With three optional parameters (suggesting multiple query patterns), zero schema descriptions, no output schema, and no annotations, the description should explain parameter relationships, return value structure, and lookup precedence. It provides none of these.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Given 0% schema description coverage, the description must compensate but only partially succeeds. It mentions 'specific printer or shared device' implying 'printer_name' and 'share_sn', but does not explain the distinction between them, valid values for 'device_type', or that all parameters are optional with null defaults.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description provides a clear verb ('Query') and resource ('printer capabilities'), and distinguishes from sibling 'query_printers' by specifying 'for a specific printer'. However, it could better differentiate from the 'update_printer_*' siblings by explicitly stating this is a read-only information retrieval operation.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance provided on when to use this versus 'query_printers', or how to select between the identification parameters ('printer_name' vs 'share_sn'). The description does not indicate that all parameters are optional or suggest how to identify the target device.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
query_printersA
List printers available to the current user.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It discloses user-scoping ('current user') implying authorization context, but does not describe the return format, pagination behavior, or whether the listing includes offline printers.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description consists of a single, efficient sentence with no extraneous words. It is appropriately front-loaded with the core action and subject.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given that this is a simple zero-parameter listing tool without an output schema, the description is minimally complete. It could be improved by mentioning that it returns a collection/list of printer objects, but the current description is sufficient for invocation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema has zero parameters. Per the scoring rules, zero parameters establishes a baseline score of 4. The description appropriately reflects that no filtering parameters are required.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description provides a clear verb ('List') and resource ('printers') with scope ('available to the current user'). However, it does not explicitly differentiate from the sibling 'query_printer_detail' (which likely retrieves specific printer information) 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.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus siblings like 'query_printer_detail', 'direct_print_document', or the various update_printer_* tools. It does not state prerequisites or conditions for use.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
update_printer_colorC
Update color mode for an existing roaming task.
| Name | Required | Description | Default |
|---|---|---|---|
| task_id | Yes | ||
| color | No |
TDQS
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 indicates mutation via 'Update' and specifies the roaming task context, but fails to disclose valid color values (string|null is ambiguous), error behavior for missing tasks, or whether updates are immediate.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The single sentence is front-loaded and contains no redundant words. However, it is arguably too concise given the lack of schema coverage and annotations, leaving necessary context undocumented.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a mutation tool with 2 parameters and 0% schema coverage, the description is insufficient. It fails to specify valid color input values, explain the null default behavior, or describe what confirms a successful update (no output schema exists to compensate).
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
With 0% schema description coverage, the description partially compensates by identifying 'color' as a 'mode' and 'task_id' as referring to an 'existing roaming task'. However, it omits valid color enumerations or formats (e.g., 'color' vs 'monochrome'), which is critical given the lack of schema documentation.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb (Update) and resource (color mode for an existing roaming task). It distinguishes from siblings like update_printer_copies by specifying 'roaming task' rather than printer hardware, and links to create_roaming_task.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
While 'existing roaming task' implies a prerequisite (likely created via create_roaming_task), there is no explicit when-to-use guidance or differentiation from other update_printer_* siblings. No mention of what constitutes valid color values.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
update_printer_copiesC
Update copy count for an existing roaming task.
| Name | Required | Description | Default |
|---|---|---|---|
| task_id | Yes | ||
| copies | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden of behavioral disclosure. It states the mutation action but fails to disclose idempotency, error conditions, side effects on the print job state, or whether this triggers immediate reprocessing.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The single sentence contains no redundant words and front-loads the action, though its extreme brevity contributes to informational gaps given the lack of supporting schema descriptions and annotations.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given zero schema descriptions, no annotations, and no output schema, the description is insufficiently complete. It omits behavioral implications of changing copy counts mid-process and lacks parameter specifications necessary for correct invocation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
With 0% schema description coverage, the description must compensate for both parameters. It maps 'copy count' to the 'copies' parameter and implies 'task_id' via 'existing roaming task', but provides no format constraints, valid ranges (e.g., max copies), or whether task_id is a UUID or integer.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description provides a specific verb ('Update') and resource ('copy count') and scopes it to 'existing roaming task', clearly distinguishing it from sibling tools like update_printer_color or update_printer_paper which handle different attributes.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Mentioning 'existing roaming task' implicitly signals that the task must already exist (suggesting create_roaming_task is a prerequisite), but lacks explicit guidance on when to use this versus direct_print_document or other alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
update_printer_paperA
Update paper size for an existing roaming task using a preset name or custom dimensions in millimeters.
| Name | Required | Description | Default |
|---|---|---|---|
| task_id | Yes | ||
| paper | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full disclosure burden. It successfully explains the polymorphic input behavior (preset name string vs. custom dimensions object), but fails to mention mutation effects, return values, error conditions, or whether changes are immediate or queued.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The single sentence is tightly constructed with zero redundancy: 'Update paper size' (action), 'for an existing roaming task' (scope), and 'using a preset name or custom dimensions in millimeters' (parameter semantics). Every clause earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple two-parameter update tool with no output schema, the description adequately covers the core functionality and input formats. However, it should ideally mention what constitutes a successful response or common error conditions (e.g., invalid task_id or unsupported preset names) to be fully complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Given 0% schema description coverage, the description compensates effectively by explaining that 'paper' accepts either a preset name (string) or custom dimensions in millimeters (object), clarifying the anyOf schema structure. It implies task_id references an existing roaming task, though explicit parameter naming would strengthen this further.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the specific action ('Update paper size'), the target resource ('existing roaming task'), and distinguishes itself from sibling tools like update_printer_color or update_printer_copies by specifying 'paper size' as the particular attribute being modified.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The phrase 'existing roaming task' implies this tool is for modifying previously created tasks (likely via create_roaming_task), providing implicit workflow context. However, it lacks explicit guidance on when to use this versus direct_print_document or prerequisites for the roaming task state.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
update_printer_sideC
Update simplex or duplex settings for an existing roaming task.
| Name | Required | Description | Default |
|---|---|---|---|
| task_id | Yes | ||
| side | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries full disclosure burden but provides minimal behavioral context. It doesn't specify valid values for the side parameter (e.g., 'simplex' vs 'duplex'), explain the default null behavior, indicate idempotency, or mention permission requirements for modifying tasks.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Single sentence of 9 words with zero redundancy. The information is front-loaded with the action verb 'Update'. However, given the 0% schema coverage and lack of annotations, the brevity contributes to under-documentation rather than efficient communication.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 2-parameter mutation tool with no output schema and no annotations, the description is insufficient. It omits critical details like valid enum values for 'side', the effect of null, error conditions, or whether the update is persistent or immediate.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, requiring the description to compensate. While 'simplex or duplex' hints at valid values for the 'side' parameter, it doesn't confirm exact string values, explain the null default, or describe what 'task_id' represents (format/source). Insufficient compensation for complete lack of schema documentation.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool updates 'simplex or duplex settings' (specific resource) for an 'existing roaming task' (scope). It effectively distinguishes from sibling update_printer_* tools (color, copies, paper) by specifying the duplex/simplex domain, though it assumes familiarity with 'roaming task' from create_roaming_task.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The mention of 'existing roaming task' implies a prerequisite (task must exist first), suggesting usage order. However, it lacks explicit guidance on when to use this versus direct_print_document or other update tools, and doesn't clarify that null side might reset to default.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
upload_fileA
Upload a local file and return a public URL that the print service can read.
| Name | Required | Description | Default |
|---|---|---|---|
| file_path | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries full burden. It discloses that the tool returns a 'public URL' (important security context) and implies a side effect (upload). However, it omits critical mutation details: URL persistence, file cleanup policies, size limits, or authentication requirements.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single 13-word sentence with zero waste. It front-loads the action ('Upload'), specifies the input ('local file'), output ('public URL'), and domain context ('print service') with no redundant phrases.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a single-parameter tool without output schema or annotations, the description adequately covers the basic contract (input file → output URL). However, it leaves operational gaps regarding the 'public URL' security implications, longevity, and whether the upload is temporary or persistent.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0% (file_path has no description). The text adds minimal semantic value by implying file_path is a local filesystem path ('local file'), but fails to specify format constraints, absolute vs. relative paths, or supported file types needed to fully compensate for the schema gap.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses specific verb 'Upload' with clear resource 'local file' and distinguishes itself from printer-management siblings by specifying the outcome is 'a public URL that the print service can read.' This clearly positions it as a file preparation step for printing.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides implied usage context by mentioning 'print service can read,' suggesting when to use it (when files need to be made accessible for printing). However, it lacks explicit when-to-use guidance versus direct_print_document or prerequisites.
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.
10 tool updates
v0.1.2- First observed
check_install_progress - First observed
create_roaming_task - First observed
direct_print_document - First observed
query_printer_detail - First observed
query_printers - First observed
update_printer_color - First observed
update_printer_copies - First observed
update_printer_paper - First observed
update_printer_side - First observed
upload_file
TDQS
Scored across 10 tools
The four update_printer_* tools are named as if they configure printer hardware settings, but they actually modify roaming task parameters. This creates dangerous ambiguity with query_printer_detail (which queries actual printer capabilities), forcing agents to rely entirely on descriptions to distinguish printer properties from job configuration.
While most tools follow verb_noun patterns (create_roaming_task, upload_file), direct_print_document breaks convention by using an adjective-noun structure. More critically, the update_printer_* prefix is domain-inaccurate since these modify tasks, not printers, creating inconsistency with the actual object model.
Ten tools is a reasonable count for cloud printing functionality, covering environment checks, printer discovery, file handling, and dual print workflows. However, the granularity of four separate single-property update tools feels slightly excessive compared to a unified task update operation.
Basic printing and discovery are covered, but the roaming task workflow lacks lifecycle management: you can create and modify tasks, but cannot submit, check status, cancel, or list jobs. This leaves agents unable to track print completion or handle failures in the roaming workflow.
Maintenance
Related MCP Connectors
Cloud printing integration for AI-assisted app development via ezeep.
Print and mail physical documents in the US via USPS, with quotes, agent payment and tracking.
Print & mail PDF/HTML/Markdown/text/DOCX/images to US addresses; pay per call in x402 USDC on Base.
Cloud PDF generation from HTML, CSS and XSL-FO, with PDF/A and PDF/UA support.
Related MCP Servers
- AlicenseAqualityCmaintenanceEnables AI assistants to print documents, manage print queues, and control printers on macOS/Linux systems via the CUPS printing system. Supports printing PDFs, text files, and other formats with options like duplex printing, landscape orientation, and multiple copies.68 npm12MIT
- AlicenseNot gradedqualityDmaintenanceEnables interaction with Memobird thermal printers to print text, HTML, web pages, and images directly from MCP-enabled clients. It includes tools for device binding, image conversion, and monitoring print job status.2 npm1ISC
- AlicenseAqualityFmaintenanceConnect AI agents to physical printers. Print receipts, shipping labels, and packing slips to your existing BizPrint-connected printers from Claude and other MCP clients.71MIT
- AlicenseNot gradedqualityAmaintenanceEnables AI agents to submit PDFs or JSON-rendered templates to local printers, check printer status, and manage print jobs through MCP tools.214 npmMIT