MiniURL

OAuth 2.1 short-link tools for AI agents with scoped tokens, approvals, audit logs, and revocation.

¿Debería usar esto?

Calidad y seguridad

A
Calidad de la descripción
93%
Integridad del esquema
81%
Calidad de los nombres
96%
Riesgo de envenenamiento
100%
Coincidencia de permisos
100%
Cumplimiento del protocolo
100%

Hallazgos (2)

  • LOWTool 'clear_authentication' description lacks action verben clear_authentication
  • LOWTool 'verify_domain' description lacks action verben verify_domain

Basado en el análisis automatizado de las definiciones de herramientas y el cumplimiento del protocolo.

Costo de contexto

~8,285Tokens (definiciones de herramientas)
~3.9 KBTamaño de respuesta típico
Impacto significativo en la atención (6.47% del contexto de 128k)

Este es el número aproximado de tokens que se consumen cada vez que las herramientas del servidor se cargan en el contexto de un modelo. Los recuentos más altos reducen la atención disponible para otras tareas.

Instalar

Instalación con un clic

Agrega esto a tu archivo `claude_desktop_config.json`:

{
  "mcpServers": {
    "miniurl": {
      "url": "https://workers.miniurl.com/mcp"
    }
  }
}

Puntos de conexión remotos

https://workers.miniurl.com/mcpstreamable-http

Qué puede hacer

Inventario de herramientas

Herramientas (23)

🟢 Solo lectura🟡 Escritura🔴 Eliminación⚪ Desconocido
🟡create_guest_token

Create a short-lived MiniURL guest bearer token. Legacy MCP sessions retain it; stateless clients must pass the returned gt_ token explicitly on later requests. shorten_url can provision one automatically.

Esquema de entrada

{
  "type": "object",
  "properties": {},
  "additionalProperties": false
}

Esquema de salida

{
  "type": "object",
  "properties": {
    "success": {
      "type": "boolean"
    },
    "data": {
      "type": "object",
      "properties": {
        "guest_token": {
          "type": "string"
        },
        "expires_at": {
          "type": "string"
        }
      },
      "additionalProperties": true
    },
    "error": {
      "oneOf": [
        {
          "type": "string"
        },
        {
          "type": "object",
          "properties": {
            "code": {
              "type": "string"
            },
            "message": {
              "type": "string"
            },
            "retryable": {
              "type": "boolean"
            },
            "retry_after": {
              "type": "integer",
              "minimum": 0
            },
            "required_scope": {
              "type": "string"
            },
            "user_action_required": {
              "type": "boolean"
            }
          },
          "required": [
            "code",
            "message",
            "retryable"
          ],
          "additionalProperties": true
        }
      ]
    },
    "request_id": {
      "type": "string",
      "minLength": 8
    },
    "retryable": {
      "type": "boolean"
    },
    "retry_after": {
      "type": "integer",
      "minimum": 0
    },
    "required_scope": {
      "type": "string"
    },
    "user_action_required": {
      "type": "boolean"
    },
    "next_actions": {
      "type": "array",
      "items": {
        "type": "string"
      }
    },
    "approval": {
      "type": "object",
      "additionalProperties": true
    },
    "meta": {
      "type": "object",
      "additionalProperties": true
    }
  },
  "required": [
    "success",
    "request_id"
  ],
  "additionalProperties": false
}
🔴clear_authentication

Clear authentication retained by a legacy MCP session. Stateless clients clear authentication by omitting the Authorization header on later requests.

Esquema de entrada

{
  "type": "object",
  "properties": {},
  "additionalProperties": false
}

Esquema de salida

{
  "type": "object",
  "properties": {
    "success": {
      "type": "boolean"
    },
    "data": {
      "type": "object",
      "properties": {
        "auth_mode": {
          "type": [
            "string",
            "null"
          ]
        }
      },
      "additionalProperties": false
    },
    "error": {
      "oneOf": [
        {
          "type": "string"
        },
        {
          "type": "object",
          "properties": {
            "code": {
              "type": "string"
            },
            "message": {
              "type": "string"
            },
            "retryable": {
              "type": "boolean"
            },
            "retry_after": {
              "type": "integer",
              "minimum": 0
            },
            "required_scope": {
              "type": "string"
            },
            "user_action_required": {
              "type": "boolean"
            }
          },
          "required": [
            "code",
            "message",
            "retryable"
          ],
          "additionalProperties": true
        }
      ]
    },
    "request_id": {
      "type": "string",
      "minLength": 8
    },
    "retryable": {
      "type": "boolean"
    },
    "retry_after": {
      "type": "integer",
      "minimum": 0
    },
    "required_scope": {
      "type": "string"
    },
    "user_action_required": {
      "type": "boolean"
    },
    "next_actions": {
      "type": "array",
      "items": {
        "type": "string"
      }
    },
    "approval": {
      "type": "object",
      "additionalProperties": true
    },
    "meta": {
      "type": "object",
      "additionalProperties": true
    }
  },
  "required": [
    "success",
    "request_id"
  ],
  "additionalProperties": false
}
🟡shorten_url(url, alias, domain, password, expiration, ...)

Create a MiniURL short link for a supplied HTTP or HTTPS destination. Use when the user asks to shorten a URL or generate a MiniURL link. This is an additive external write; do not fetch or open the destination. If no authentication is supplied, MiniURL automatically starts a guest flow. Reuse idempotency_key when retrying the same logical request.

Esquema de entrada

{
  "type": "object",
  "properties": {
    "url": {
      "type": "string",
      "format": "uri",
      "description": "The HTTP or HTTPS destination URL to shorten."
    },
    "alias": {
      "type": "string",
      "minLength": 1,
      "maxLength": 64,
      "description": "Optional custom alias. Call check_alias before creating it. Requires a registered account; miniurl.com aliases must be at least 4 characters."
    },
    "domain": {
      "type": "string",
      "format": "hostname",
      "description": "Optional domain. Requires a registered account with an active custom domain."
    },
    "password": {
      "type": "string",
      "description": "Optional password. Requires Pro."
    },
    "expiration": {
      "type": "string",
      "format": "date-time",
      "description": "Optional ISO 8601 expiration datetime. Requires Pro."
    },
    "activated_at": {
      "type": "string",
      "format": "date-time",
      "description": "Optional ISO 8601 activation datetime. Requires Pro."
    },
    "dry_run": {
      "type": "boolean",
      "description": "Validate the destination and show the planned link without creating it. Agent tokens only."
    },
    "idempotency_key": {
      "type": "string",
      "minLength": 8,
      "maxLength": 128,
      "pattern": "^[A-Za-z0-9._:-]{8,128}$",
      "description": "Optional idempotency key. Reusing it with the same payload safely replays the original result."
    }
  },
  "required": [
    "url"
  ],
  "additionalProperties": false
}

Esquema de salida

{
  "type": "object",
  "properties": {
    "success": {
      "type": "boolean"
    },
    "data": {
      "type": "object",
      "properties": {
        "short_url": {
          "type": "string"
        },
        "alias": {
          "type": "string"
        },
        "full_url": {
          "type": "string"
        },
        "domain": {
          "type": "string"
        }
      },
      "additionalProperties": true
    },
    "error": {
      "oneOf": [
        {
          "type": "string"
        },
        {
          "type": "object",
          "properties": {
            "code": {
              "type": "string"
            },
            "message": {
              "type": "string"
            },
            "retryable": {
              "type": "boolean"
            },
            "retry_after": {
              "type": "integer",
              "minimum": 0
            },
            "required_scope": {
              "type": "string"
            },
            "user_action_required": {
              "type": "boolean"
            }
          },
          "required": [
            "code",
            "message",
            "retryable"
          ],
          "additionalProperties": true
        }
      ]
    },
    "request_id": {
      "type": "string",
      "minLength": 8
    },
    "retryable": {
      "type": "boolean"
    },
    "retry_after": {
      "type": "integer",
      "minimum": 0
    },
    "required_scope": {
      "type": "string"
    },
    "user_action_required": {
      "type": "boolean"
    },
    "next_actions": {
      "type": "array",
      "items": {
        "type": "string"
      }
    },
    "approval": {
      "type": "object",
      "additionalProperties": true
    },
    "meta": {
      "type": "object",
      "additionalProperties": true
    }
  },
  "required": [
    "success",
    "request_id"
  ],
  "additionalProperties": false
}
🟡send_registration_code(email)

Send a 6-digit registration code to the user email, using the current guest session.

Esquema de entrada

{
  "type": "object",
  "properties": {
    "email": {
      "type": "string",
      "format": "email",
      "description": "The user email address."
    }
  },
  "required": [
    "email"
  ],
  "additionalProperties": false
}

Esquema de salida

{
  "type": "object",
  "properties": {
    "success": {
      "type": "boolean"
    },
    "data": {
      "type": [
        "object",
        "array",
        "string",
        "number",
        "boolean",
        "null"
      ],
      "additionalProperties": true
    },
    "error": {
      "oneOf": [
        {
          "type": "string"
        },
        {
          "type": "object",
          "properties": {
            "code": {
              "type": "string"
            },
            "message": {
              "type": "string"
            },
            "retryable": {
              "type": "boolean"
            },
            "retry_after": {
              "type": "integer",
              "minimum": 0
            },
            "required_scope": {
              "type": "string"
            },
            "user_action_required": {
              "type": "boolean"
            }
          },
          "required": [
            "code",
            "message",
            "retryable"
          ],
          "additionalProperties": true
        }
      ]
    },
    "request_id": {
      "type": "string",
      "minLength": 8
    },
    "retryable": {
      "type": "boolean"
    },
    "retry_after": {
      "type": "integer",
      "minimum": 0
    },
    "required_scope": {
      "type": "string"
    },
    "user_action_required": {
      "type": "boolean"
    },
    "next_actions": {
      "type": "array",
      "items": {
        "type": "string"
      }
    },
    "approval": {
      "type": "object",
      "additionalProperties": true
    },
    "meta": {
      "type": "object",
      "additionalProperties": true
    }
  },
  "required": [
    "success",
    "request_id"
  ],
  "additionalProperties": false
}
🟡verify_registration_code(email, code)

Verify the emailed code, create the account, claim guest links, and continue with OAuth 2.1 + PKCE. Long-lived API keys are never returned over MCP.

Esquema de entrada

{
  "type": "object",
  "properties": {
    "email": {
      "type": "string",
      "format": "email",
      "description": "The user email address."
    },
    "code": {
      "type": "string",
      "pattern": "^\\d{6}$",
      "description": "The 6-digit verification code."
    }
  },
  "required": [
    "email",
    "code"
  ],
  "additionalProperties": false
}

Esquema de salida

{
  "type": "object",
  "properties": {
    "success": {
      "type": "boolean"
    },
    "data": {
      "type": [
        "object",
        "array",
        "string",
        "number",
        "boolean",
        "null"
      ],
      "additionalProperties": true
    },
    "error": {
      "oneOf": [
        {
          "type": "string"
        },
        {
          "type": "object",
          "properties": {
            "code": {
              "type": "string"
            },
            "message": {
              "type": "string"
            },
            "retryable": {
              "type": "boolean"
            },
            "retry_after": {
              "type": "integer",
              "minimum": 0
            },
            "required_scope": {
              "type": "string"
            },
            "user_action_required": {
              "type": "boolean"
            }
          },
          "required": [
            "code",
            "message",
            "retryable"
          ],
          "additionalProperties": true
        }
      ]
    },
    "request_id": {
      "type": "string",
      "minLength": 8
    },
    "retryable": {
      "type": "boolean"
    },
    "retry_after": {
      "type": "integer",
      "minimum": 0
    },
    "required_scope": {
      "type": "string"
    },
    "user_action_required": {
      "type": "boolean"
    },
    "next_actions": {
      "type": "array",
      "items": {
        "type": "string"
      }
    },
    "approval": {
      "type": "object",
      "additionalProperties": true
    },
    "meta": {
      "type": "object",
      "additionalProperties": true
    }
  },
  "required": [
    "success",
    "request_id"
  ],
  "additionalProperties": false
}
🟢get_account_status

Inspect the current guest/free/pro account status, remaining quota, and feature availability.

Esquema de entrada

{
  "type": "object",
  "properties": {},
  "additionalProperties": false
}

Esquema de salida

{
  "type": "object",
  "properties": {
    "success": {
      "type": "boolean"
    },
    "data": {
      "type": [
        "object",
        "array",
        "string",
        "number",
        "boolean",
        "null"
      ],
      "additionalProperties": true
    },
    "error": {
      "oneOf": [
        {
          "type": "string"
        },
        {
          "type": "object",
          "properties": {
            "code": {
              "type": "string"
            },
            "message": {
              "type": "string"
            },
            "retryable": {
              "type": "boolean"
            },
            "retry_after": {
              "type": "integer",
              "minimum": 0
            },
            "required_scope": {
              "type": "string"
            },
            "user_action_required": {
              "type": "boolean"
            }
          },
          "required": [
            "code",
            "message",
            "retryable"
          ],
          "additionalProperties": true
        }
      ]
    },
    "request_id": {
      "type": "string",
      "minLength": 8
    },
    "retryable": {
      "type": "boolean"
    },
    "retry_after": {
      "type": "integer",
      "minimum": 0
    },
    "required_scope": {
      "type": "string"
    },
    "user_action_required": {
      "type": "boolean"
    },
    "next_actions": {
      "type": "array",
      "items": {
        "type": "string"
      }
    },
    "approval": {
      "type": "object",
      "additionalProperties": true
    },
    "meta": {
      "type": "object",
      "additionalProperties": true
    }
  },
  "required": [
    "success",
    "request_id"
  ],
  "additionalProperties": false
}
🔴start_pro_upgrade(interval, idempotency_key, approval_id, approval_token)

Create a shortened checkout link for upgrading the current registered account to Pro.

Esquema de entrada

{
  "type": "object",
  "properties": {
    "interval": {
      "type": "string",
      "enum": [
        "monthly",
        "yearly"
      ],
      "description": "Billing interval. Defaults to monthly."
    },
    "idempotency_key": {
      "type": "string",
      "minLength": 8,
      "maxLength": 128,
      "pattern": "^[A-Za-z0-9._:-]{8,128}$"
    },
    "approval_id": {
      "type": "string",
      "description": "Approval id returned by a previous USER_APPROVAL_REQUIRED response."
    },
    "approval_token": {
      "type": "string",
      "description": "Legacy compatibility field; normally omit it and retry with approval_id after approval."
    }
  },
  "additionalProperties": false
}

Esquema de salida

{
  "type": "object",
  "properties": {
    "success": {
      "type": "boolean"
    },
    "data": {
      "type": "object",
      "properties": {
        "checkout_url": {
          "type": "string"
        },
        "interval": {
          "type": "string"
        }
      },
      "additionalProperties": true
    },
    "error": {
      "oneOf": [
        {
          "type": "string"
        },
        {
          "type": "object",
          "properties": {
            "code": {
              "type": "string"
            },
            "message": {
              "type": "string"
            },
            "retryable": {
              "type": "boolean"
            },
            "retry_after": {
              "type": "integer",
              "minimum": 0
            },
            "required_scope": {
              "type": "string"
            },
            "user_action_required": {
              "type": "boolean"
            }
          },
          "required": [
            "code",
            "message",
            "retryable"
          ],
          "additionalProperties": true
        }
      ]
    },
    "request_id": {
      "type": "string",
      "minLength": 8
    },
    "retryable": {
      "type": "boolean"
    },
    "retry_after": {
      "type": "integer",
      "minimum": 0
    },
    "required_scope": {
      "type": "string"
    },
    "user_action_required": {
      "type": "boolean"
    },
    "next_actions": {
      "type": "array",
      "items": {
        "type": "string"
      }
    },
    "approval": {
      "type": "object",
      "additionalProperties": true
    },
    "meta": {
      "type": "object",
      "additionalProperties": true
    }
  },
  "required": [
    "success",
    "request_id"
  ],
  "additionalProperties": false
}
🟢list_domains

List domains available to the current registered account, including miniurl.com and active custom domains.

Esquema de entrada

{
  "type": "object",
  "properties": {},
  "additionalProperties": false
}

Esquema de salida

{
  "type": "object",
  "properties": {
    "success": {
      "type": "boolean"
    },
    "data": {
      "type": "object",
      "properties": {
        "domains": {
          "type": "array"
        }
      },
      "additionalProperties": true
    },
    "error": {
      "oneOf": [
        {
          "type": "string"
        },
        {
          "type": "object",
          "properties": {
            "code": {
              "type": "string"
            },
            "message": {
              "type": "string"
            },
            "retryable": {
              "type": "boolean"
            },
            "retry_after": {
              "type": "integer",
              "minimum": 0
            },
            "required_scope": {
              "type": "string"
            },
            "user_action_required": {
              "type": "boolean"
            }
          },
          "required": [
            "code",
            "message",
            "retryable"
          ],
          "additionalProperties": true
        }
      ]
    },
    "request_id": {
      "type": "string",
      "minLength": 8
    },
    "retryable": {
      "type": "boolean"
    },
    "retry_after": {
      "type": "integer",
      "minimum": 0
    },
    "required_scope": {
      "type": "string"
    },
    "user_action_required": {
      "type": "boolean"
    },
    "next_actions": {
      "type": "array",
      "items": {
        "type": "string"
      }
    },
    "approval": {
      "type": "object",
      "additionalProperties": true
    },
    "meta": {
      "type": "object",
      "additionalProperties": true
    }
  },
  "required": [
    "success",
    "request_id"
  ],
  "additionalProperties": false
}
🔴add_domain(domain, approval_id, approval_token)

Request a custom domain to be connected to MiniURL. Agent domain changes require human approval by default.

Esquema de entrada

{
  "type": "object",
  "properties": {
    "domain": {
      "type": "string",
      "format": "hostname",
      "description": "A custom hostname such as links.example.com."
    },
    "approval_id": {
      "type": "string"
    },
    "approval_token": {
      "type": "string",
      "description": "Legacy compatibility field; normally omit it."
    }
  },
  "required": [
    "domain"
  ],
  "additionalProperties": false
}

Esquema de salida

{
  "type": "object",
  "properties": {
    "success": {
      "type": "boolean"
    },
    "data": {
      "type": [
        "object",
        "array",
        "string",
        "number",
        "boolean",
        "null"
      ],
      "additionalProperties": true
    },
    "error": {
      "oneOf": [
        {
          "type": "string"
        },
        {
          "type": "object",
          "properties": {
            "code": {
              "type": "string"
            },
            "message": {
              "type": "string"
            },
            "retryable": {
              "type": "boolean"
            },
            "retry_after": {
              "type": "integer",
              "minimum": 0
            },
            "required_scope": {
              "type": "string"
            },
            "user_action_required": {
              "type": "boolean"
            }
          },
          "required": [
            "code",
            "message",
            "retryable"
          ],
          "additionalProperties": true
        }
      ]
    },
    "request_id": {
      "type": "string",
      "minLength": 8
    },
    "retryable": {
      "type": "boolean"
    },
    "retry_after": {
      "type": "integer",
      "minimum": 0
    },
    "required_scope": {
      "type": "string"
    },
    "user_action_required": {
      "type": "boolean"
    },
    "next_actions": {
      "type": "array",
      "items": {
        "type": "string"
      }
    },
    "approval": {
      "type": "object",
      "additionalProperties": true
    },
    "meta": {
      "type": "object",
      "additionalProperties": true
    }
  },
  "required": [
    "success",
    "request_id"
  ],
  "additionalProperties": false
}
🔴delete_domain(domain_id, confirm, approval_id, approval_token)

Delete a custom domain and its linked URLs after a dry-run confirmation. Agent domain changes require human approval by default.

Esquema de entrada

{
  "type": "object",
  "properties": {
    "domain_id": {
      "type": "integer",
      "minimum": 1
    },
    "confirm": {
      "type": "boolean",
      "description": "Set true only after reviewing the dry-run impact response."
    },
    "approval_id": {
      "type": "string"
    },
    "approval_token": {
      "type": "string",
      "description": "Legacy compatibility field; normally omit it."
    }
  },
  "required": [
    "domain_id"
  ],
  "additionalProperties": false
}

Esquema de salida

{
  "type": "object",
  "properties": {
    "success": {
      "type": "boolean"
    },
    "data": {
      "type": [
        "object",
        "array",
        "string",
        "number",
        "boolean",
        "null"
      ],
      "additionalProperties": true
    },
    "error": {
      "oneOf": [
        {
          "type": "string"
        },
        {
          "type": "object",
          "properties": {
            "code": {
              "type": "string"
            },
            "message": {
              "type": "string"
            },
            "retryable": {
              "type": "boolean"
            },
            "retry_after": {
              "type": "integer",
              "minimum": 0
            },
            "required_scope": {
              "type": "string"
            },
            "user_action_required": {
              "type": "boolean"
            }
          },
          "required": [
            "code",
            "message",
            "retryable"
          ],
          "additionalProperties": true
        }
      ]
    },
    "request_id": {
      "type": "string",
      "minLength": 8
    },
    "retryable": {
      "type": "boolean"
    },
    "retry_after": {
      "type": "integer",
      "minimum": 0
    },
    "required_scope": {
      "type": "string"
    },
    "user_action_required": {
      "type": "boolean"
    },
    "next_actions": {
      "type": "array",
      "items": {
        "type": "string"
      }
    },
    "approval": {
      "type": "object",
      "additionalProperties": true
    },
    "meta": {
      "type": "object",
      "additionalProperties": true
    }
  },
  "required": [
    "success",
    "request_id"
  ],
  "additionalProperties": false
}
⚪verify_domain(domain_id, approval_id, approval_token)

Refresh custom-domain DNS and SSL verification status. Agent domain changes require human approval by default.

Esquema de entrada

{
  "type": "object",
  "properties": {
    "domain_id": {
      "type": "integer",
      "minimum": 1
    },
    "approval_id": {
      "type": "string"
    },
    "approval_token": {
      "type": "string",
      "description": "Legacy compatibility field; normally omit it."
    }
  },
  "required": [
    "domain_id"
  ],
  "additionalProperties": false
}

Esquema de salida

{
  "type": "object",
  "properties": {
    "success": {
      "type": "boolean"
    },
    "data": {
      "type": [
        "object",
        "array",
        "string",
        "number",
        "boolean",
        "null"
      ],
      "additionalProperties": true
    },
    "error": {
      "oneOf": [
        {
          "type": "string"
        },
        {
          "type": "object",
          "properties": {
            "code": {
              "type": "string"
            },
            "message": {
              "type": "string"
            },
            "retryable": {
              "type": "boolean"
            },
            "retry_after": {
              "type": "integer",
              "minimum": 0
            },
            "required_scope": {
              "type": "string"
            },
            "user_action_required": {
              "type": "boolean"
            }
          },
          "required": [
            "code",
            "message",
            "retryable"
          ],
          "additionalProperties": true
        }
      ]
    },
    "request_id": {
      "type": "string",
      "minLength": 8
    },
    "retryable": {
      "type": "boolean"
    },
    "retry_after": {
      "type": "integer",
      "minimum": 0
    },
    "required_scope": {
      "type": "string"
    },
    "user_action_required": {
      "type": "boolean"
    },
    "next_actions": {
      "type": "array",
      "items": {
        "type": "string"
      }
    },
    "approval": {
      "type": "object",
      "additionalProperties": true
    },
    "meta": {
      "type": "object",
      "additionalProperties": true
    }
  },
  "required": [
    "success",
    "request_id"
  ],
  "additionalProperties": false
}
🟢list_links(limit, offset, cursor, search, domain)

List short links for the current registered account.

Esquema de entrada

{
  "type": "object",
  "properties": {
    "limit": {
      "type": "integer",
      "minimum": 1,
      "maximum": 100,
      "description": "Optional page size. Defaults to 20."
    },
    "offset": {
      "type": "integer",
      "minimum": 0,
      "description": "Optional zero-based offset for pagination. Defaults to 0."
    },
    "cursor": {
      "type": "string",
      "description": "Opaque cursor returned as next_cursor. Prefer cursor pagination for stable traversal."
    },
    "search": {
      "type": "string",
      "description": "Optional search term for alias or destination URL."
    },
    "domain": {
      "type": "string",
      "format": "hostname",
      "description": "Optional domain filter."
    }
  },
  "additionalProperties": false
}

Esquema de salida

{
  "type": "object",
  "properties": {
    "success": {
      "type": "boolean"
    },
    "data": {
      "type": "object",
      "properties": {
        "links": {
          "type": "array"
        },
        "pagination": {
          "type": "object"
        }
      },
      "additionalProperties": true
    },
    "error": {
      "oneOf": [
        {
          "type": "string"
        },
        {
          "type": "object",
          "properties": {
            "code": {
              "type": "string"
            },
            "message": {
              "type": "string"
            },
            "retryable": {
              "type": "boolean"
            },
            "retry_after": {
              "type": "integer",
              "minimum": 0
            },
            "required_scope": {
              "type": "string"
            },
            "user_action_required": {
              "type": "boolean"
            }
          },
          "required": [
            "code",
            "message",
            "retryable"
          ],
          "additionalProperties": true
        }
      ]
    },
    "request_id": {
      "type": "string",
      "minLength": 8
    },
    "retryable": {
      "type": "boolean"
    },
    "retry_after": {
      "type": "integer",
      "minimum": 0
    },
    "required_scope": {
      "type": "string"
    },
    "user_action_required": {
      "type": "boolean"
    },
    "next_actions": {
      "type": "array",
      "items": {
        "type": "string"
      }
    },
    "approval": {
      "type": "object",
      "additionalProperties": true
    },
    "meta": {
      "type": "object",
      "additionalProperties": true
    }
  },
  "required": [
    "success",
    "request_id"
  ],
  "additionalProperties": false
}
🟢get_link(alias, domain)

Get a single short link by alias for the current registered account.

Esquema de entrada

{
  "type": "object",
  "properties": {
    "alias": {
      "type": "string",
      "minLength": 1,
      "maxLength": 64,
      "description": "The link alias to fetch."
    },
    "domain": {
      "type": "string",
      "format": "hostname",
      "description": "The link domain. Defaults to miniurl.com."
    }
  },
  "required": [
    "alias"
  ],
  "additionalProperties": false
}

Esquema de salida

{
  "type": "object",
  "properties": {
    "success": {
      "type": "boolean"
    },
    "data": {
      "type": [
        "object",
        "array",
        "string",
        "number",
        "boolean",
        "null"
      ],
      "additionalProperties": true
    },
    "error": {
      "oneOf": [
        {
          "type": "string"
        },
        {
          "type": "object",
          "properties": {
            "code": {
              "type": "string"
            },
            "message": {
              "type": "string"
            },
            "retryable": {
              "type": "boolean"
            },
            "retry_after": {
              "type": "integer",
              "minimum": 0
            },
            "required_scope": {
              "type": "string"
            },
            "user_action_required": {
              "type": "boolean"
            }
          },
          "required": [
            "code",
            "message",
            "retryable"
          ],
          "additionalProperties": true
        }
      ]
    },
    "request_id": {
      "type": "string",
      "minLength": 8
    },
    "retryable": {
      "type": "boolean"
    },
    "retry_after": {
      "type": "integer",
      "minimum": 0
    },
    "required_scope": {
      "type": "string"
    },
    "user_action_required": {
      "type": "boolean"
    },
    "next_actions": {
      "type": "array",
      "items": {
        "type": "string"
      }
    },
    "approval": {
      "type": "object",
      "additionalProperties": true
    },
    "meta": {
      "type": "object",
      "additionalProperties": true
    }
  },
  "required": [
    "success",
    "request_id"
  ],
  "additionalProperties": false
}
🟡update_link(alias, domain, url, password, clear_password, ...)

Update a registered short link. Some fields require Pro.

Esquema de entrada

{
  "type": "object",
  "properties": {
    "alias": {
      "type": "string",
      "minLength": 1,
      "maxLength": 64,
      "description": "The link alias to update."
    },
    "domain": {
      "type": "string",
      "format": "hostname",
      "description": "The link domain. Defaults to miniurl.com."
    },
    "url": {
      "type": "string",
      "format": "uri",
      "description": "New HTTP or HTTPS destination URL. Requires Pro."
    },
    "password": {
      "type": "string",
      "description": "Set or replace the password. Requires Pro."
    },
    "clear_password": {
      "type": "boolean",
      "description": "Remove the current password."
    },
    "expiration": {
      "type": "string",
      "format": "date-time",
      "description": "Set a new ISO 8601 expiration datetime. Requires Pro."
    },
    "clear_expiration": {
      "type": "boolean",
      "description": "Clear the current expiration."
    },
    "activated_at": {
      "type": "string",
      "format": "date-time",
      "description": "Set a new ISO 8601 activation datetime. Requires Pro."
    },
    "clear_activated_at": {
      "type": "boolean",
      "description": "Clear the current scheduled activation datetime."
    },
    "dry_run": {
      "type": "boolean",
      "description": "Validate and preview the update without changing the link. Agent tokens only."
    },
    "idempotency_key": {
      "type": "string",
      "minLength": 8,
      "maxLength": 128,
      "pattern": "^[A-Za-z0-9._:-]{8,128}$"
    }
  },
  "required": [
    "alias"
  ],
  "additionalProperties": false
}

Esquema de salida

{
  "type": "object",
  "properties": {
    "success": {
      "type": "boolean"
    },
    "data": {
      "type": [
        "object",
        "array",
        "string",
        "number",
        "boolean",
        "null"
      ],
      "additionalProperties": true
    },
    "error": {
      "oneOf": [
        {
          "type": "string"
        },
        {
          "type": "object",
          "properties": {
            "code": {
              "type": "string"
            },
            "message": {
              "type": "string"
            },
            "retryable": {
              "type": "boolean"
            },
            "retry_after": {
              "type": "integer",
              "minimum": 0
            },
            "required_scope": {
              "type": "string"
            },
            "user_action_required": {
              "type": "boolean"
            }
          },
          "required": [
            "code",
            "message",
            "retryable"
          ],
          "additionalProperties": true
        }
      ]
    },
    "request_id": {
      "type": "string",
      "minLength": 8
    },
    "retryable": {
      "type": "boolean"
    },
    "retry_after": {
      "type": "integer",
      "minimum": 0
    },
    "required_scope": {
      "type": "string"
    },
    "user_action_required": {
      "type": "boolean"
    },
    "next_actions": {
      "type": "array",
      "items": {
        "type": "string"
      }
    },
    "approval": {
      "type": "object",
      "additionalProperties": true
    },
    "meta": {
      "type": "object",
      "additionalProperties": true
    }
  },
  "required": [
    "success",
    "request_id"
  ],
  "additionalProperties": false
}
🔴delete_link(alias, domain, dry_run, idempotency_key, approval_id, ...)

Delete a registered short link permanently.

Esquema de entrada

{
  "type": "object",
  "properties": {
    "alias": {
      "type": "string",
      "minLength": 1,
      "maxLength": 64,
      "description": "The alias to delete."
    },
    "domain": {
      "type": "string",
      "format": "hostname",
      "description": "The link domain. Defaults to miniurl.com."
    },
    "dry_run": {
      "type": "boolean",
      "description": "Preview the deletion and affected link scope without writing. Human approval is still required for the real delete."
    },
    "idempotency_key": {
      "type": "string",
      "minLength": 8,
      "maxLength": 128,
      "pattern": "^[A-Za-z0-9._:-]{8,128}$"
    },
    "approval_id": {
      "type": "string",
      "description": "Approval id returned by a previous USER_APPROVAL_REQUIRED response."
    },
    "approval_token": {
      "type": "string",
      "description": "Legacy compatibility field; normally omit it and retry with approval_id after approval."
    }
  },
  "required": [
    "alias"
  ],
  "additionalProperties": false
}

Esquema de salida

{
  "type": "object",
  "properties": {
    "success": {
      "type": "boolean"
    },
    "data": {
      "type": [
        "object",
        "array",
        "string",
        "number",
        "boolean",
        "null"
      ],
      "additionalProperties": true
    },
    "error": {
      "oneOf": [
        {
          "type": "string"
        },
        {
          "type": "object",
          "properties": {
            "code": {
              "type": "string"
            },
            "message": {
              "type": "string"
            },
            "retryable": {
              "type": "boolean"
            },
            "retry_after": {
              "type": "integer",
              "minimum": 0
            },
            "required_scope": {
              "type": "string"
            },
            "user_action_required": {
              "type": "boolean"
            }
          },
          "required": [
            "code",
            "message",
            "retryable"
          ],
          "additionalProperties": true
        }
      ]
    },
    "request_id": {
      "type": "string",
      "minLength": 8
    },
    "retryable": {
      "type": "boolean"
    },
    "retry_after": {
      "type": "integer",
      "minimum": 0
    },
    "required_scope": {
      "type": "string"
    },
    "user_action_required": {
      "type": "boolean"
    },
    "next_actions": {
      "type": "array",
      "items": {
        "type": "string"
      }
    },
    "approval": {
      "type": "object",
      "additionalProperties": true
    },
    "meta": {
      "type": "object",
      "additionalProperties": true
    }
  },
  "required": [
    "success",
    "request_id"
  ],
  "additionalProperties": false
}
🟡bulk_create_links(links, idempotency_key)

Create multiple short links in one request. Free accounts can create up to 10 at a time, Pro up to 50.

Esquema de entrada

{
  "type": "object",
  "properties": {
    "links": {
      "type": "array",
      "minItems": 1,
      "maxItems": 50,
      "items": {
        "type": "object",
        "properties": {
          "url": {
            "type": "string",
            "format": "uri"
          },
          "alias": {
            "type": "string",
            "minLength": 1,
            "maxLength": 64
          },
          "domain": {
            "type": "string",
            "format": "hostname"
          },
          "password": {
            "type": "string"
          },
          "expiration": {
            "type": "string",
            "format": "date-time"
          },
          "activated_at": {
            "type": "string",
            "format": "date-time"
          }
        },
        "required": [
          "url"
        ]
      }
    },
    "idempotency_key": {
      "type": "string",
      "minLength": 8,
      "maxLength": 128,
      "pattern": "^[A-Za-z0-9._:-]{8,128}$"
    }
  },
  "required": [
    "links"
  ],
  "additionalProperties": false
}

Esquema de salida

{
  "type": "object",
  "properties": {
    "success": {
      "type": "boolean"
    },
    "data": {
      "type": "object",
      "properties": {
        "results": {
          "type": "array"
        },
        "summary": {
          "type": "object"
        }
      },
      "additionalProperties": true
    },
    "error": {
      "oneOf": [
        {
          "type": "string"
        },
        {
          "type": "object",
          "properties": {
            "code": {
              "type": "string"
            },
            "message": {
              "type": "string"
            },
            "retryable": {
              "type": "boolean"
            },
            "retry_after": {
              "type": "integer",
              "minimum": 0
            },
            "required_scope": {
              "type": "string"
            },
            "user_action_required": {
              "type": "boolean"
            }
          },
          "required": [
            "code",
            "message",
            "retryable"
          ],
          "additionalProperties": true
        }
      ]
    },
    "request_id": {
      "type": "string",
      "minLength": 8
    },
    "retryable": {
      "type": "boolean"
    },
    "retry_after": {
      "type": "integer",
      "minimum": 0
    },
    "required_scope": {
      "type": "string"
    },
    "user_action_required": {
      "type": "boolean"
    },
    "next_actions": {
      "type": "array",
      "items": {
        "type": "string"
      }
    },
    "approval": {
      "type": "object",
      "additionalProperties": true
    },
    "meta": {
      "type": "object",
      "additionalProperties": true
    }
  },
  "required": [
    "success",
    "request_id"
  ],
  "additionalProperties": false
}
🟢get_link_stats(alias, domain, period)

Get link analytics. Free accounts receive a basic total plus an upgrade hint; Pro accounts receive full breakdowns.

Esquema de entrada

{
  "type": "object",
  "properties": {
    "alias": {
      "type": "string",
      "minLength": 1,
      "maxLength": 64,
      "description": "The alias to inspect."
    },
    "domain": {
      "type": "string",
      "format": "hostname",
      "description": "Optional domain to scope the alias lookup. Defaults to miniurl.com."
    },
    "period": {
      "type": "string",
      "enum": [
        "24H",
        "7D",
        "30D",
        "ALL"
      ],
      "description": "Analytics time range. Defaults to 7D."
    }
  },
  "required": [
    "alias"
  ],
  "additionalProperties": false
}

Esquema de salida

{
  "type": "object",
  "properties": {
    "success": {
      "type": "boolean"
    },
    "data": {
      "type": "object",
      "properties": {
        "total_clicks": {
          "type": "integer"
        },
        "clicks": {
          "type": "array"
        }
      },
      "additionalProperties": true
    },
    "error": {
      "oneOf": [
        {
          "type": "string"
        },
        {
          "type": "object",
          "properties": {
            "code": {
              "type": "string"
            },
            "message": {
              "type": "string"
            },
            "retryable": {
              "type": "boolean"
            },
            "retry_after": {
              "type": "integer",
              "minimum": 0
            },
            "required_scope": {
              "type": "string"
            },
            "user_action_required": {
              "type": "boolean"
            }
          },
          "required": [
            "code",
            "message",
            "retryable"
          ],
          "additionalProperties": true
        }
      ]
    },
    "request_id": {
      "type": "string",
      "minLength": 8
    },
    "retryable": {
      "type": "boolean"
    },
    "retry_after": {
      "type": "integer",
      "minimum": 0
    },
    "required_scope": {
      "type": "string"
    },
    "user_action_required": {
      "type": "boolean"
    },
    "next_actions": {
      "type": "array",
      "items": {
        "type": "string"
      }
    },
    "approval": {
      "type": "object",
      "additionalProperties": true
    },
    "meta": {
      "type": "object",
      "additionalProperties": true
    }
  },
  "required": [
    "success",
    "request_id"
  ],
  "additionalProperties": false
}
🟢check_alias(alias, domain)

Check whether a custom alias is available on a given domain before creating a link.

Esquema de entrada

{
  "type": "object",
  "properties": {
    "alias": {
      "type": "string",
      "minLength": 1,
      "maxLength": 64,
      "description": "The alias to check."
    },
    "domain": {
      "type": "string",
      "format": "hostname",
      "description": "The domain to check on. Defaults to miniurl.com."
    }
  },
  "required": [
    "alias"
  ],
  "additionalProperties": false
}

Esquema de salida

{
  "type": "object",
  "properties": {
    "success": {
      "type": "boolean"
    },
    "data": {
      "type": "object",
      "properties": {
        "alias": {
          "type": "string"
        },
        "exists": {
          "type": "boolean"
        },
        "available": {
          "type": "boolean"
        }
      },
      "additionalProperties": true
    },
    "error": {
      "oneOf": [
        {
          "type": "string"
        },
        {
          "type": "object",
          "properties": {
            "code": {
              "type": "string"
            },
            "message": {
              "type": "string"
            },
            "retryable": {
              "type": "boolean"
            },
            "retry_after": {
              "type": "integer",
              "minimum": 0
            },
            "required_scope": {
              "type": "string"
            },
            "user_action_required": {
              "type": "boolean"
            }
          },
          "required": [
            "code",
            "message",
            "retryable"
          ],
          "additionalProperties": true
        }
      ]
    },
    "request_id": {
      "type": "string",
      "minLength": 8
    },
    "retryable": {
      "type": "boolean"
    },
    "retry_after": {
      "type": "integer",
      "minimum": 0
    },
    "required_scope": {
      "type": "string"
    },
    "user_action_required": {
      "type": "boolean"
    },
    "next_actions": {
      "type": "array",
      "items": {
        "type": "string"
      }
    },
    "approval": {
      "type": "object",
      "additionalProperties": true
    },
    "meta": {
      "type": "object",
      "additionalProperties": true
    }
  },
  "required": [
    "success",
    "request_id"
  ],
  "additionalProperties": false
}
🟢list_tags

List all tags for the current registered account. Tags help organise links into campaigns or categories.

Esquema de entrada

{
  "type": "object",
  "properties": {},
  "additionalProperties": false
}

Esquema de salida

{
  "type": "object",
  "properties": {
    "success": {
      "type": "boolean"
    },
    "data": {
      "type": "object",
      "properties": {
        "tags": {
          "type": "array"
        }
      },
      "additionalProperties": true
    },
    "error": {
      "oneOf": [
        {
          "type": "string"
        },
        {
          "type": "object",
          "properties": {
            "code": {
              "type": "string"
            },
            "message": {
              "type": "string"
            },
            "retryable": {
              "type": "boolean"
            },
            "retry_after": {
              "type": "integer",
              "minimum": 0
            },
            "required_scope": {
              "type": "string"
            },
            "user_action_required": {
              "type": "boolean"
            }
          },
          "required": [
            "code",
            "message",
            "retryable"
          ],
          "additionalProperties": true
        }
      ]
    },
    "request_id": {
      "type": "string",
      "minLength": 8
    },
    "retryable": {
      "type": "boolean"
    },
    "retry_after": {
      "type": "integer",
      "minimum": 0
    },
    "required_scope": {
      "type": "string"
    },
    "user_action_required": {
      "type": "boolean"
    },
    "next_actions": {
      "type": "array",
      "items": {
        "type": "string"
      }
    },
    "approval": {
      "type": "object",
      "additionalProperties": true
    },
    "meta": {
      "type": "object",
      "additionalProperties": true
    }
  },
  "required": [
    "success",
    "request_id"
  ],
  "additionalProperties": false
}
🟡create_tag(name, color)

Create a new tag for organising links. Maximum 20 tags per account.

Esquema de entrada

{
  "type": "object",
  "properties": {
    "name": {
      "type": "string",
      "minLength": 1,
      "maxLength": 30,
      "description": "Tag name, 1-30 characters."
    },
    "color": {
      "type": "string",
      "enum": [
        "#6b7280",
        "#ef4444",
        "#f97316",
        "#eab308",
        "#22c55e",
        "#06b6d4",
        "#3b82f6",
        "#8b5cf6",
        "#ec4899"
      ],
      "description": "Tag colour hex code. Defaults to #6b7280 (grey)."
    }
  },
  "required": [
    "name"
  ],
  "additionalProperties": false
}

Esquema de salida

{
  "type": "object",
  "properties": {
    "success": {
      "type": "boolean"
    },
    "data": {
      "type": [
        "object",
        "array",
        "string",
        "number",
        "boolean",
        "null"
      ],
      "additionalProperties": true
    },
    "error": {
      "oneOf": [
        {
          "type": "string"
        },
        {
          "type": "object",
          "properties": {
            "code": {
              "type": "string"
            },
            "message": {
              "type": "string"
            },
            "retryable": {
              "type": "boolean"
            },
            "retry_after": {
              "type": "integer",
              "minimum": 0
            },
            "required_scope": {
              "type": "string"
            },
            "user_action_required": {
              "type": "boolean"
            }
          },
          "required": [
            "code",
            "message",
            "retryable"
          ],
          "additionalProperties": true
        }
      ]
    },
    "request_id": {
      "type": "string",
      "minLength": 8
    },
    "retryable": {
      "type": "boolean"
    },
    "retry_after": {
      "type": "integer",
      "minimum": 0
    },
    "required_scope": {
      "type": "string"
    },
    "user_action_required": {
      "type": "boolean"
    },
    "next_actions": {
      "type": "array",
      "items": {
        "type": "string"
      }
    },
    "approval": {
      "type": "object",
      "additionalProperties": true
    },
    "meta": {
      "type": "object",
      "additionalProperties": true
    }
  },
  "required": [
    "success",
    "request_id"
  ],
  "additionalProperties": false
}
🔴delete_tag(tag_id, approval_id, approval_token)

Delete a tag and remove it from all associated links.

Esquema de entrada

{
  "type": "object",
  "properties": {
    "tag_id": {
      "type": "integer",
      "minimum": 1,
      "description": "The tag ID to delete."
    },
    "approval_id": {
      "type": "string",
      "description": "Approval id returned by a previous USER_APPROVAL_REQUIRED response."
    },
    "approval_token": {
      "type": "string",
      "description": "Legacy compatibility field; normally omit it and retry with approval_id after approval."
    }
  },
  "required": [
    "tag_id"
  ],
  "additionalProperties": false
}

Esquema de salida

{
  "type": "object",
  "properties": {
    "success": {
      "type": "boolean"
    },
    "data": {
      "type": [
        "object",
        "array",
        "string",
        "number",
        "boolean",
        "null"
      ],
      "additionalProperties": true
    },
    "error": {
      "oneOf": [
        {
          "type": "string"
        },
        {
          "type": "object",
          "properties": {
            "code": {
              "type": "string"
            },
            "message": {
              "type": "string"
            },
            "retryable": {
              "type": "boolean"
            },
            "retry_after": {
              "type": "integer",
              "minimum": 0
            },
            "required_scope": {
              "type": "string"
            },
            "user_action_required": {
              "type": "boolean"
            }
          },
          "required": [
            "code",
            "message",
            "retryable"
          ],
          "additionalProperties": true
        }
      ]
    },
    "request_id": {
      "type": "string",
      "minLength": 8
    },
    "retryable": {
      "type": "boolean"
    },
    "retry_after": {
      "type": "integer",
      "minimum": 0
    },
    "required_scope": {
      "type": "string"
    },
    "user_action_required": {
      "type": "boolean"
    },
    "next_actions": {
      "type": "array",
      "items": {
        "type": "string"
      }
    },
    "approval": {
      "type": "object",
      "additionalProperties": true
    },
    "meta": {
      "type": "object",
      "additionalProperties": true
    }
  },
  "required": [
    "success",
    "request_id"
  ],
  "additionalProperties": false
}
🟡tag_link(alias, domain, tag_id)

Add a tag to a short link for campaign or category organisation.

Esquema de entrada

{
  "type": "object",
  "properties": {
    "alias": {
      "type": "string",
      "minLength": 1,
      "maxLength": 64,
      "description": "The link alias to tag."
    },
    "domain": {
      "type": "string",
      "format": "hostname",
      "description": "The link domain. Defaults to miniurl.com."
    },
    "tag_id": {
      "type": "integer",
      "minimum": 1,
      "description": "The tag ID to assign."
    }
  },
  "required": [
    "alias",
    "tag_id"
  ],
  "additionalProperties": false
}

Esquema de salida

{
  "type": "object",
  "properties": {
    "success": {
      "type": "boolean"
    },
    "data": {
      "type": [
        "object",
        "array",
        "string",
        "number",
        "boolean",
        "null"
      ],
      "additionalProperties": true
    },
    "error": {
      "oneOf": [
        {
          "type": "string"
        },
        {
          "type": "object",
          "properties": {
            "code": {
              "type": "string"
            },
            "message": {
              "type": "string"
            },
            "retryable": {
              "type": "boolean"
            },
            "retry_after": {
              "type": "integer",
              "minimum": 0
            },
            "required_scope": {
              "type": "string"
            },
            "user_action_required": {
              "type": "boolean"
            }
          },
          "required": [
            "code",
            "message",
            "retryable"
          ],
          "additionalProperties": true
        }
      ]
    },
    "request_id": {
      "type": "string",
      "minLength": 8
    },
    "retryable": {
      "type": "boolean"
    },
    "retry_after": {
      "type": "integer",
      "minimum": 0
    },
    "required_scope": {
      "type": "string"
    },
    "user_action_required": {
      "type": "boolean"
    },
    "next_actions": {
      "type": "array",
      "items": {
        "type": "string"
      }
    },
    "approval": {
      "type": "object",
      "additionalProperties": true
    },
    "meta": {
      "type": "object",
      "additionalProperties": true
    }
  },
  "required": [
    "success",
    "request_id"
  ],
  "additionalProperties": false
}
🔴untag_link(alias, domain, tag_id)

Remove a tag from a short link.

Esquema de entrada

{
  "type": "object",
  "properties": {
    "alias": {
      "type": "string",
      "minLength": 1,
      "maxLength": 64,
      "description": "The link alias."
    },
    "domain": {
      "type": "string",
      "format": "hostname",
      "description": "The link domain. Defaults to miniurl.com."
    },
    "tag_id": {
      "type": "integer",
      "minimum": 1,
      "description": "The tag ID to remove."
    }
  },
  "required": [
    "alias",
    "tag_id"
  ],
  "additionalProperties": false
}

Esquema de salida

{
  "type": "object",
  "properties": {
    "success": {
      "type": "boolean"
    },
    "data": {
      "type": [
        "object",
        "array",
        "string",
        "number",
        "boolean",
        "null"
      ],
      "additionalProperties": true
    },
    "error": {
      "oneOf": [
        {
          "type": "string"
        },
        {
          "type": "object",
          "properties": {
            "code": {
              "type": "string"
            },
            "message": {
              "type": "string"
            },
            "retryable": {
              "type": "boolean"
            },
            "retry_after": {
              "type": "integer",
              "minimum": 0
            },
            "required_scope": {
              "type": "string"
            },
            "user_action_required": {
              "type": "boolean"
            }
          },
          "required": [
            "code",
            "message",
            "retryable"
          ],
          "additionalProperties": true
        }
      ]
    },
    "request_id": {
      "type": "string",
      "minLength": 8
    },
    "retryable": {
      "type": "boolean"
    },
    "retry_after": {
      "type": "integer",
      "minimum": 0
    },
    "required_scope": {
      "type": "string"
    },
    "user_action_required": {
      "type": "boolean"
    },
    "next_actions": {
      "type": "array",
      "items": {
        "type": "string"
      }
    },
    "approval": {
      "type": "object",
      "additionalProperties": true
    },
    "meta": {
      "type": "object",
      "additionalProperties": true
    }
  },
  "required": [
    "success",
    "request_id"
  ],
  "additionalProperties": false
}

Comunidad

Califica este servidor

Evidencia

Observaciones recientes

verificadoversión no registrada23 herramientas
verificadoversión no registrada23 herramientas