Ashby job boards
Busca en los tableros de empleo públicos de Ashby: resuelve una empresa, lee sus vacantes y el salario que publica.
Documentación
mcp-ashby
Ashby es un software de reclutamiento, y cada empresa que lo utiliza obtiene un tablón de empleo público incluido. Cada tablón contiene las posiciones abiertas de esa empresa con su título, su departamento y equipo, el tipo de empleo, las ubicaciones y si el trabajo es remoto, el anuncio completo y, cuando la empresa decide publicarlo, la remuneración: un rango salarial, una participación accionaria, una comisión o un bono, cada uno con el período al que corresponde. Ashby mantiene un tablón por empresa y no publica un índice entre ellos.
Este servidor conecta un cliente de chat con esos tablones. Usted nombra las empresas que le interesan, y convierte cada nombre en el token que dirige a su tablón, busca sus publicaciones, las filtra por departamento, equipo, ubicación, país, tipo de empleo, modalidad remota, antigüedad o remuneración, lee una publicación completa, enumera las palabras que cada tablón usa realmente y compara la remuneración de varias publicaciones una al lado de la otra. No necesita clave de API ni cuenta.
Instalación
Instalación en un clic
Claude Code
claude mcp add ashby -- npx -y mcp-ashby
Claude Desktop, Cursor y cualquier cliente que use el formato de configuración estándar
{
"mcpServers": {
"ashby": {
"command": "npx",
"args": ["-y", "mcp-ashby"]
}
}
}
Se requiere Node 24 o posterior, y no es necesario configurar ninguna variable de entorno.
Con Docker
{
"mcpServers": {
"ashby": {
"command": "docker",
"args": ["run", "-i", "--rm", "ghcr.io/smeet666/mcp-ashby:2.0.1"]
}
}
}
-i mantiene stdin abierto, que es por donde viaja el protocolo, y -t se omite
porque una TTY reescribe el flujo. El contenedor necesita HTTPS saliente hacia
api.ashbyhq.com, y nada más: sin volumen, sin puerto, sin credencial.
Paquete, sin npm
Descargue mcp-ashby-2.0.1.mcpb desde
la última versión y
ábralo. Un cliente que admita paquetes MCP lo instala por sí solo, sin npm
y sin archivo de configuración que editar. El paquete incluye sus dependencias,
por lo que no se descarga nada en el momento de la instalación.
Lo que puede preguntar
- "¿Está Ramp contratando en Ashby?"
- "Encuéntrame roles de diseño remotos en Ramp y Linear."
- "Léeme esa publicación completa."
- "¿Qué departamentos usa ese tablón para clasificar sus empleos?"
- "Compara los salarios de esas publicaciones de ingeniería una al lado de la otra."
Toda pregunta parte de una empresa, ya que Ashby no ofrece búsqueda entre tablones.
search_jobs resuelve los nombres que usted proporciona, por lo que no se necesita preparación:
resolve_board(["Ramp"]) -> ramp, publishing
search_jobs(["Ramp"], query: "designer", is_remote: true)
get_job("ramp", "b0c8…")
Herramientas
| Herramienta | Qué hace |
|---|---|
resolve_board | Convierte un nombre de empresa en el token del tablón de Ashby. |
search_jobs | Busca las publicaciones de las empresas que usted nombra. |
get_job | Lee una publicación completa, incluido el anuncio. |
list_filter_values | Enumera las palabras que usa un tablón, con cuántas publicaciones las incluyen. |
compare_compensation | Compara un componente de remuneración de varias publicaciones una al lado de la otra. |
Cada tablón mantiene sus propios departamentos y equipos, por lo que un filtro
escrito con el vocabulario de otro tablón se reduce a nada. list_filter_values publica
las palabras que un tablón usa realmente.
resolve_board
Convierte un nombre de empresa en el token que dirige a su tablón de Ashby.
| Argumento | Tipo | Obligatorio | Qué hace |
|---|---|---|---|
name | string | sí | Un nombre de empresa, o un token de tablón de Ashby que ya conozca. |
A cambio: found, los tablones que respondieron, y tried, los formularios realmente
enviados en orden. Se prueban cuatro formularios por nombre, por lo que no encontrar
nada nunca es prueba de que una empresa esté ausente de Ashby.
search_jobs
Busca las publicaciones de las empresas nombradas. Ashby sirve un tablón completo de una vez, y cada restricción a continuación se aplica a lo leído.
| Argumento | Tipo | Obligatorio | Qué hace |
|---|---|---|---|
companies | array de 1 a 10 cadenas | sí | Nombres de empresas o tokens de tablón. |
query | string | no | Palabras a buscar. |
search_in | title o title_and_description, predeterminado title | no | Dónde se busca query. |
department | una cadena o una lista de hasta 10 | no | Departamentos tal como los escribe el tablón. |
team | una cadena o una lista de hasta 10 | no | Equipos tal como los escribe el tablón. |
employment_type | una cadena o una lista de hasta 6 | no | Tipos de empleo. |
workplace_type | una cadena o una lista de hasta 4 | no | Tipos de lugar de trabajo. |
is_remote | booleano | no | Conservar las publicaciones marcadas como remotas. |
country | un país o una lista de hasta 10 | no | Países tal como los escribe el tablón. |
location_contains | string | no | Parte de una línea de ubicación. |
published_after | una fecha ISO 8601 | no | Qué tan reciente debe ser una publicación. |
has_compensation | booleano | no | Conservar las publicaciones cuya empresa publica un rango salarial. |
salary_min | número, 0 o más | no | Un mínimo para el componente salarial. |
currency | código de tres letras | no | La moneda en la que está escrito el mínimo. |
salary_interval | string, predeterminado 1 YEAR | no | El período al que pertenece el mínimo. |
sort | published_desc, published_asc o title, predeterminado published_desc | no | Cómo se ordenan las filas. |
limit | entero, 1 a 100, predeterminado 20 | no | Publicaciones a servir. |
offset | entero, 0 a 10000, predeterminado 0 | no | Publicaciones a omitir. |
A cambio: jobs, cada una con board y id, que get_job toma
juntos, además de title, department, team, employment_type, location,
country, secondary_location_count, workplace_type, is_remote,
published_at con el desplazamiento que publica Ashby, compensation_summary, job_url
y apply_url. Las filas no llevan texto de anuncio, en ningún límite.
total_on_board cuenta las publicaciones que contienen los tablones leídos, total_matched las que
los criterios conservaron y returned las de esta respuesta: tres números diferentes.
per_company da un resultado por empresa con su status, filters_applied
repite lo que se aplicó y undeclared cuenta las publicaciones que no declaran
nada en un campo que se está filtrando, para que una restricción nunca las elimine en silencio.
get_job
Lee una publicación completa.
| Argumento | Tipo | Obligatorio | Qué hacer |
|---|---|---|---|
board | string | sí | Un nombre de empresa, o un token de tablón de Ashby. |
job_id | string | sí | El identificador que lleva una fila de búsqueda. |
description | plain, html o none, predeterminado plain | no | Cómo servir el anuncio. |
include_compensation | booleano, predeterminado true | no | Incluir la remuneración que publicó la empresa. |
El anuncio llega a miles de caracteres, y html es el marcado propio de la empresa,
sin reescribir.
A cambio: la publicación que lleva una fila de búsqueda, con su descripción, sus ubicaciones y los componentes de remuneración que publicó la empresa.
list_filter_values
Enumera las palabras que un tablón usa realmente, con cuántas publicaciones las incluyen.
| Argumento | Tipo | Obligatorio | Qué hacer |
|---|---|---|---|
board | string | sí | Un nombre de empresa, o un token de tablón. |
facet | departments, teams, locations, countries, employment_types, workplace_types o all, predeterminado all | no | Qué vocabulario leer. |
A cambio: facets, cada valor con el número de publicaciones que lo incluyen, y
undeclared, las publicaciones que no declaran nada en ese aspecto. sibling_spellings
nombra las variantes que difieren solo en mayúsculas o espacios, que un filtro
trataría de otro modo como dos cosas diferentes.
compare_compensation
Compara un componente de remuneración de varias publicaciones una al lado de la otra.
| Argumento | Tipo | Obligatorio | Qué hace |
|---|---|---|---|
board | string | sí | Un nombre de empresa o un token de bolsa. |
job_ids | array de hasta 50 strings | no | Las ofertas a comparar. |
department | un string o una lista de hasta 10 | no | Comparar un departamento en su lugar. |
team | un string o una lista de hasta 10 | no | Comparar un equipo en su lugar. |
query | string | no | Palabras para buscar en los títulos. |
component | Salary, EquityCashValue, EquityPercentage, Commission o Bonus, por defecto Salary | no | Qué componente comparar. |
interval | string, por defecto 1 YEAR | no | El período comparado. |
limit | entero, de 1 a 100, por defecto 25 | no | Ofertas a comparar. |
Un componente a la vez: una participación de capital y un salario no se suman. Las ofertas citadas en otro período se listan por separado, sin convertir.
A cambio: rows, una por oferta, con el component y el interval
sobre los que se compararon, currencies_present nombrando cada moneda en la respuesta,
y not_published listando las ofertas cuya empresa no publicó nada, lo cual
nunca es lo mismo que cero.
Qué significa una cifra salarial
Una empresa publica lo que elige. Una oferta sin rango regresa sin ninguno, nunca con un cero. Un rango se informa en la moneda y en el período en que Ashby lo lleva, y nunca se convierte ni se anualiza: comparar dos ofertas citadas en períodos diferentes se deja a quien sabe para qué es la comparación.
Configuración
No hay que configurar nada. El servidor no lee ninguna variable de entorno, y el
bloque mcpServers anterior está completo tal como está escrito.
El ritmo, el tiempo de espera y la caché son ajustes de la capa del cliente, que Como biblioteca muestra cómo pasar. El intervalo entre dos solicitudes se puede ampliar allí y nunca reducir.
Errores
Cada fallo lleva uno de seis códigos, un mensaje y, donde ayuda, los valores que habrían sido aceptados.
| Código | Qué pasó | Qué hacer |
|---|---|---|
not_found | Ashby respondió y no tiene tal bolsa u oferta. | Verifica el token con resolve_board. |
invalid_input | Los argumentos fueron rechazados antes de enviar cualquier solicitud. | Lee el mensaje, que nombra el argumento y qué acepta. |
rate_limited | Ashby pidió a este cliente que se ralentizara. | Espera y vuelve a llamar con los mismos argumentos. La oferta sigue en la bolsa. |
parse_failure | Ashby respondió en una forma que este cliente no puede leer. | Repórtalo en el rastreador de problemas. |
network_error | La solicitud no se completó. | Inténtalo de nuevo en breve. |
timeout | La solicitud superó su plazo. | Pide menos empresas o un limit más pequeño. |
Como biblioteca
La capa que lee Ashby se publica por separado, con su ritmo, su caché y sus errores, y sin ningún protocolo adjunto.
import { Client } from "mcp-ashby/client";
const client = new Client({ minIntervalMs: 2000 });
const resolved = await client.resolveBoard("Ramp");
console.log(resolved.found);
ClientOptions toma minIntervalMs, timeoutMs, cacheTtlMs y fetchImpl.
Un intervalo por debajo del mínimo publicado se ignora, por lo que el mínimo se
mantiene aquí también.
Ritmo y atribución
Las solicitudes salen una a la vez con al menos un segundo entre ellas, y ese
mínimo se mantiene sin importar cómo esté configurado el cliente. Ashby sirve
toda una bolsa en una respuesta, que puede pesar megabytes, por lo que una sola
pregunta sobre una empresa cuesta una solicitud y este servidor guarda la
respuesta brevemente en lugar de volver a preguntar. El User-Agent lleva el
proyecto y una dirección donde se puede contactar a una persona, y no imita
ningún navegador.
Cada oferta lleva la dirección de su página de Ashby y su URL de postulación. Acredita a la empresa y enlaza esa página cuando muestres una oferta.
Este servidor MCP es un proyecto no oficial, sin afiliación con Ashby ni con las empresas cuyas bolsas lee.
Privacidad
Este servidor no recopila nada sobre ti y no envía nada a su autor. Se ejecuta
en tu máquina, contacta a api.ashbyhq.com y nada más, guarda sus respuestas
en memoria mientras se ejecuta y no escribe nada en disco.
PRIVACY.md indica qué lleva una solicitud y qué ajustes
cambian algo de eso.
Desarrollo
npm install
npm run build:fixtures
npm test
npm run check
Las pruebas se ejecutan contra fixtures generados y no hacen ninguna solicitud de
red. La suite en vivo, npm run test:live, hace una solicitud por ruta y se ejecuta
cada noche contra el propio servicio.
Contribuciones
Los errores, preguntas e ideas van en el rastreador de problemas. Las solicitudes de extracción son bienvenidas; abrir un problema primero ayuda a acordar la forma del cambio. Consulta CONTRIBUTING.md.
Licencia
MIT, consulta LICENSE. Las ofertas pertenecen a las empresas que las publicaron.
mcp-ashby (francés)
Ashby es un software de reclutamiento, y cada empresa que lo usa recibe con él un sitio de ofertas público. Cada sitio lleva los puestos abiertos de esa empresa con su título, su departamento y su equipo, el tipo de contrato, las ubicaciones y el carácter remoto del trabajo, el anuncio completo y, cuando la empresa ha elegido publicarlo, la remuneración: un rango salarial, una participación de capital, una comisión o un bono, cada uno con el período sobre el que se expresa. Ashby aloja un sitio por empresa y no publica ningún índice que los atraviese.
Este servidor conecta un cliente de conversación con estos sitios. Nombras las empresas que te interesan, y él traduce cada nombre al token que direcciona su sitio, busca en sus ofertas, las filtra por departamento, equipo, ubicación, país, tipo de contrato, trabajo remoto, frescura o remuneración, lee una oferta completa, lista las palabras que cada sitio usa realmente y pone las remuneraciones de varias ofertas lado a lado. Sin clave de API, sin cuenta.
Instalación
Instalación en un clic
Claude Code
claude mcp add ashby -- npx -y mcp-ashby
Claude Desktop, Cursor y cualquier cliente con formato de configuración estándar
{
"mcpServers": {
"ashby": {
"command": "npx",
"args": ["-y", "mcp-ashby"]
}
}
}
Se necesita Node 24 o más reciente, y no hay que configurar ninguna variable de entorno.
Con Docker
{
"mcpServers": {
"ashby": {
"command": "docker",
"args": ["run", "-i", "--rm", "ghcr.io/smeet666/mcp-ashby:2.0.1"]
}
}
}
-i mantiene la entrada estándar abierta, que es el canal del protocolo, y -t se
omite porque un TTY reescribe el flujo. El contenedor necesita acceso HTTPS
saliente hacia api.ashbyhq.com, y nada más: sin volúmenes, sin puertos,
sin identificadores.
Bundle, sin npm
Descarga mcp-ashby-2.0.1.mcpb desde
la última publicación
y ábrelo. Un cliente que gestiona bundles MCP lo instala solo, sin npm y
sin archivo de configuración que modificar. El bundle lleva sus dependencias,
por lo que no se descarga nada en la instalación.
Qué se puede pedir
- «¿Está Ramp reclutando en Ashby?»
- «Encuéntrame puestos de diseño en remoto en Ramp y Linear.»
- «Léeme esta oferta completa.»
- «¿Bajo qué departamentos clasifica este sitio sus ofertas?»
- «Pon lado a lado los salarios de estas ofertas de ingeniería.»
Cada pregunta parte de una empresa, ya que Ashby no ofrece ninguna búsqueda que
atraviese los sitios. search_jobs resuelve él mismo los nombres que se le
dan, por lo que no hay nada que preparar:
resolve_board(["Ramp"]) -> ramp, publie
search_jobs(["Ramp"], query: "designer", is_remote: true)
get_job("ramp", "b0c8…")
Las herramientas
| Herramienta | Qué hace |
|---|---|
resolve_board | Traduce un nombre de empresa a token de sitio Ashby. |
search_jobs | Busca en las ofertas de las empresas nombradas. |
get_job | Lee una oferta completa, anuncio incluido. |
list_filter_values | Lista las palabras que un sitio usa y cuántas ofertas las llevan. |
compare_compensation | Pone un componente de remuneración de varias ofertas lado a lado. |
Cada sitio mantiene sus propios departamentos y equipos, por lo que un filtro
escrito en el vocabulario de otro sitio no retiene nada. list_filter_values publica
las palabras que un sitio usa realmente.
resolve_board
Traduce un nombre de empresa al token que direcciona su sitio Ashby.
| Argumento | Tipo | Obligatorio | Qué hace |
|---|---|---|---|
name | cadena | sí | Un nombre de empresa o un token Ashby ya conocido. |
A cambio: found, los sitios que respondieron, y tried, las formas
realmente enviadas en orden. Se prueban cuatro formas por nombre, por lo que no
encontrar nada nunca prueba que una empresa esté ausente de Ashby.
search_jobs
Busca en las ofertas de las empresas nombradas. Ashby sirve un sitio completo de una vez, y cada restricción a continuación se aplica a lo que se ha leído.
| Argumento | Tipo | Requisito | Qué hace |
|---|---|---|---|
companies | matriz de 1 a 10 cadenas | sí | Nombres de empresas o tokens. |
query | cadena | no | Las palabras a buscar. |
search_in | title o title_and_description, por defecto title | no | Dónde se busca query. |
department | una cadena o una lista de hasta 10 | no | Departamentos tal como el sitio los escribe. |
team | una cadena o una lista de hasta 10 | no | Equipos tal como el sitio los escribe. |
employment_type | una cadena o una lista de hasta 6 | no | Tipos de contrato. |
workplace_type | una cadena o una lista de hasta 4 | no | Modalidades de trabajo. |
is_remote | booleano | no | Conservar solo las ofertas en teletrabajo. |
country | un país o una lista de hasta 10 | no | Países tal como el sitio los escribe. |
location_contains | cadena | no | Una parte de una línea de ubicación. |
published_after | una fecha ISO 8601 | no | La antigüedad máxima de una oferta. |
has_compensation | booleano | no | Conservar solo las ofertas cuya empresa publica un rango. |
salary_min | número, 0 o más | no | Un mínimo para el componente salarial. |
currency | código de tres letras | no | La moneda del mínimo. |
salary_interval | cadena, por defecto 1 YEAR | no | El período al que se refiere el mínimo. |
sort | published_desc, published_asc o title, por defecto published_desc | no | El orden de las líneas. |
limit | entero, 1 a 100, por defecto 20 | no | Ofertas a servir. |
offset | entero, 0 a 10000, por defecto 0 | no | Ofertas a omitir. |
En retorno: jobs, cada una con board y id, que get_job retoma
en conjunto, más title, department, team, employment_type, location,
country, secondary_location_count, workplace_type, is_remote,
published_at con la diferencia horaria que Ashby publica, compensation_summary,
job_url y apply_url. Las líneas no incluyen el anuncio, sin importar
el límite. total_on_board cuenta las ofertas que contienen los sitios leídos,
total_matched las que los criterios retuvieron, y returned las de
esta respuesta: tres números diferentes. per_company da un resultado por
empresa con su status, filters_applied reexpone lo que se aplicó, y
undeclared cuenta las ofertas que no declaran nada sobre un campo filtrado, para
que una restricción nunca las elimine en silencio.
get_job
Lee una oferta completa.
| Argumento | Tipo | Requisito | Qué hace |
|---|---|---|---|
board | cadena | sí | Un nombre de empresa, o un token de Ashby. |
job_id | cadena | sí | El identificador que lleva una línea. |
description | plain, html o none, por defecto plain | no | Cómo servir el anuncio. |
include_compensation | booleano, por defecto true | no | Incluir la remuneración publicada. |
El anuncio tiene miles de caracteres, y html es el marcado de la
empresa, no reescrito.
En retorno: la oferta que lleva una línea de búsqueda, con su descripción, sus ubicaciones y los componentes de remuneración que la empresa publicó.
list_filter_values
Lista las palabras que un sitio emplea realmente, y cuántas ofertas llevan cada una.
| Argumento | Tipo | Requisito | Qué hace |
|---|---|---|---|
board | cadena | sí | Un nombre de empresa, o un token. |
facet | departments, teams, locations, countries, employment_types, workplace_types o all, por defecto all | no | El vocabulario a leer. |
En retorno: facets, cada valor con el número de ofertas que lo llevan,
y undeclared, las ofertas que no declaran nada sobre esta faceta.
sibling_spellings nombra las formulaciones que solo difieren por mayúsculas o
espacios, que un filtro trataría de otro modo como dos cosas distintas.
compare_compensation
Pone un componente de remuneración de varias ofertas lado a lado.
| Argumento | Tipo | Requisito | Qué hace |
|---|---|---|---|
board | cadena | sí | Un nombre de empresa, o un token. |
job_ids | matriz de hasta 50 cadenas | no | Las ofertas a comparar. |
department | una cadena o una lista de hasta 10 | no | Comparar un departamento. |
team | una cadena o una lista de hasta 10 | no | Comparar un equipo. |
query | cadena | no | Las palabras a buscar en los títulos. |
component | Salary, EquityCashValue, EquityPercentage, Commission o Bonus, por defecto Salary | no | El componente comparado. |
interval | cadena, por defecto 1 YEAR | no | El período comparado. |
limit | entero, 1 a 100, por defecto 25 | no | Ofertas a comparar. |
Un componente a la vez: una parte de capital y un salario no se suman. Las ofertas expresadas en otro período se listan aparte, sin conversión.
En retorno: rows, una por oferta, con el component y el interval sobre
los que se compararon, currencies_present que nombra cada moneda
presente en la respuesta, y not_published que lista las ofertas cuya
empresa no publicó nada, lo que nunca equivale a cero.
Qué dice una cifra de remuneración
Una empresa publica lo que quiere. Una oferta sin rango regresa sin nada, nunca con un cero. Un rango se entrega en la moneda y en el período donde Ashby lo lleva, y nunca se convierte ni se anualiza: comparar dos ofertas expresadas en períodos diferentes se deja a quien sabe para qué debe servir la comparación.
Configuración
No hay nada que configurar. El servidor no lee ninguna variable de entorno, y
el bloque mcpServers anterior está completo tal cual.
El ritmo, el plazo y la caché son ajustes de la capa cliente, que Como biblioteca muestra cómo pasar. La diferencia entre dos solicitudes puede ampliarse allí, y nunca reducirse.
Errores
Cada fallo lleva uno de los seis códigos, un mensaje, y cuando ayuda, los valores que habrían sido aceptados.
| Código | Qué sucedió | Qué hacer |
|---|---|---|
not_found | Ashby respondió, y no tiene ni este sitio ni esta oferta. | Verifique el token con resolve_board. |
invalid_input | Los argumentos fueron rechazados antes de cualquier solicitud. | Lea el mensaje, que nombra el argumento y qué acepta. |
rate_limited | Ashby pide a este cliente que reduzca la velocidad. | Espere, luego vuelva a llamar con los mismos argumentos. La oferta sigue en línea. |
parse_failure | Ashby respondió en una forma que este cliente no lee. | Repórtelo en el seguimiento de incidentes. |
network_error | La solicitud no se completó. | Reintente en breve. |
timeout | La solicitud superó su plazo. | Solicite menos empresas, o un limit más pequeño. |
Como biblioteca
La capa que lee Ashby se publica sola, con su ritmo, su caché y sus errores, sin protocolo adjunto.
import { Client } from "mcp-ashby/client";
const client = new Client({ minIntervalMs: 2000 });
const resolved = await client.resolveBoard("Ramp");
console.log(resolved.found);
ClientOptions toma minIntervalMs, timeoutMs, cacheTtlMs y fetchImpl.
Una diferencia por debajo del mínimo publicado se ignora, por lo que el mínimo también se aplica
aquí.
Ritmo y atribución
Las solicitudes se envían una a una con al menos un segundo entre ellas, y este
mínimo se mantiene sin importar la configuración del cliente. Ashby sirve un sitio
completo en una sola respuesta, que puede pesar varios megabytes, por lo que una
consulta sobre una empresa cuesta una solicitud y este servidor guarda brevemente
la respuesta en lugar de volver a solicitarla. El User-Agent lleva el proyecto y una dirección para contactar a una
persona, y no imita a ningún navegador.
Cada oferta incluye la dirección de su página de Ashby y su dirección de postulación. Dale crédito a la empresa y enlaza a esa página cuando muestres una oferta.
Este MCP es un proyecto no oficial, sin afiliación con Ashby ni con las empresas cuyos sitios lee.
Privacidad
Este servidor no recopila nada sobre ti y no envía nada a su autor. Se ejecuta en
tu máquina, solo se conecta a api.ashbyhq.com, guarda sus respuestas en memoria
mientras está en ejecución, y no escribe nada en el disco. PRIVACY.md indica
qué lleva una solicitud y qué ajustes cambian eso.
Desarrollo
npm install
npm run build:fixtures
npm test
npm run check
Las pruebas se ejecutan sobre fixtures generados y no emiten ninguna solicitud.
La suite en vivo, npm run test:live, emite una solicitud por ruta y se ejecuta
cada noche contra el servicio mismo.
Contribuciones
Los errores, las preguntas y las ideas tienen su lugar en el seguimiento de incidentes. Las propuestas de modificación son bienvenidas; abrir un ticket primero ayuda a ponerse de acuerdo sobre la forma del cambio. Consulta CONTRIBUTING.md.
Licencia
MIT, ver LICENSE. Las ofertas pertenecen a las empresas que las han publicado.