Perfect Clock

Find meeting times across time zones and compare working hours.

¿Debería usar esto?

Calidad y seguridad

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

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

Costo de contexto

~1,175Tokens (definiciones de herramientas)
~4.9 KBTamaño de respuesta típico
Impacto moderado en la atención (0.92% 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": {
    "perfect-clock": {
      "url": "https://perfectclock.cc/mcp"
    }
  }
}

Puntos de conexión remotos

https://perfectclock.cc/mcpstreamable-http

Qué puede hacer

Inventario de herramientas

Herramientas (2)

🟢 Solo lectura🟡 Escritura🔴 Eliminación⚪ Desconocido
⚪plan_meeting_schedule(title, tz, time, durationMinutes, rule, ...)

Plans a one-off or recurring meeting with people in other time zones when its time is known (e.g. "every other Tuesday at 10:00 Berlin time with Anna in Tbilisi"). Expands it into concrete dates and shows each one in every participant's local time, with working-hours checks, public holidays and daylight-saving shifts. Saves the schedule for 30 days and returns a private perfectclock.cc/s/... link that opens it in Perfect Clock.

Esquema de entrada

{
  "type": "object",
  "properties": {
    "title": {
      "type": "string",
      "maxLength": 120,
      "description": "Meeting title."
    },
    "tz": {
      "type": "string",
      "description": "Time zone the meeting time is fixed in (usually the organizer's)."
    },
    "time": {
      "type": "string",
      "pattern": "^([01]\\d|2[0-3]):[0-5]\\d$",
      "description": "Local start time in `tz`."
    },
    "durationMinutes": {
      "default": 60,
      "type": "integer",
      "minimum": 5,
      "maximum": 720
    },
    "rule": {
      "type": "object",
      "properties": {
        "freq": {
          "type": "string",
          "enum": [
            "once",
            "daily",
            "weekly",
            "monthly"
          ]
        },
        "interval": {
          "description": "Every N days/weeks/months; default 1.",
          "type": "integer",
          "minimum": 1,
          "maximum": 12
        },
        "byDay": {
          "description": "Weekdays for weekly rules; for monthly with setPos, the weekday.",
          "type": "array",
          "items": {
            "type": "string",
            "enum": [
              "MO",
              "TU",
              "WE",
              "TH",
              "FR",
              "SA",
              "SU"
            ]
          }
        },
        "setPos": {
          "description": "Monthly \"Nth weekday\": 1-4, or -1 for the last.",
          "type": "integer",
          "minimum": -1,
          "maximum": 4
        },
        "start": {
          "description": "First possible date in `tz`; default today.",
          "type": "string",
          "pattern": "^\\d{4}-\\d{2}-\\d{2}$"
        },
        "count": {
          "type": "integer",
          "minimum": 1,
          "maximum": 500
        },
        "until": {
          "type": "string",
          "pattern": "^\\d{4}-\\d{2}-\\d{2}$"
        }
      },
      "required": [
        "freq"
      ],
      "description": "Recurrence of the meeting."
    },
    "participants": {
      "minItems": 1,
      "maxItems": 10,
      "type": "array",
      "items": {
        "type": "object",
        "properties": {
          "label": {
            "type": "string",
            "maxLength": 60,
            "description": "How the participant or place is called in the conversation, e.g. \"Anna\" or \"Tokyo office\"."
          },
          "tz": {
            "type": "string",
            "description": "IANA time zone of this participant, e.g. Asia/Tbilisi."
          },
          "workHours": {
            "description": "Local working hours [start, end]; default [\"09:00\",\"17:00\"].",
            "minItems": 2,
            "maxItems": 2,
            "type": "array",
            "items": {
              "type": "string",
              "pattern": "^([01]\\d|2[0-3]):[0-5]\\d$"
            }
          }
        },
        "required": [
          "label",
          "tz"
        ]
      },
      "description": "People or places the meeting must suit, each with their own time zone."
    },
    "maxOccurrences": {
      "default": 8,
      "description": "How many upcoming meetings to list.",
      "type": "integer",
      "minimum": 1,
      "maximum": 20
    }
  },
  "required": [
    "title",
    "tz",
    "time",
    "rule",
    "participants"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🟢find_meeting_windows(title, tz, from, days, durationMinutes, ...)

Finds when people in other time zones can meet, when the time is not decided yet: the windows on each day when all participants are within their working hours, accounting for weekends, public holidays and daylight-saving changes, and one suggested start time that fits the most days. Saves that suggested time on those days for 30 days and returns a private perfectclock.cc/s/... link that opens it in Perfect Clock.

Esquema de entrada

{
  "type": "object",
  "properties": {
    "title": {
      "description": "Meeting title, if the user gave one.",
      "type": "string",
      "maxLength": 120
    },
    "tz": {
      "type": "string",
      "description": "Time zone whose calendar days are scanned (usually the organizer's)."
    },
    "from": {
      "description": "First day in `tz`; default today.",
      "type": "string",
      "pattern": "^\\d{4}-\\d{2}-\\d{2}$"
    },
    "days": {
      "default": 5,
      "type": "integer",
      "minimum": 1,
      "maximum": 14
    },
    "durationMinutes": {
      "default": 60,
      "type": "integer",
      "minimum": 15,
      "maximum": 480
    },
    "participants": {
      "minItems": 1,
      "maxItems": 10,
      "type": "array",
      "items": {
        "type": "object",
        "properties": {
          "label": {
            "type": "string",
            "maxLength": 60,
            "description": "How the participant or place is called in the conversation, e.g. \"Anna\" or \"Tokyo office\"."
          },
          "tz": {
            "type": "string",
            "description": "IANA time zone of this participant, e.g. Asia/Tbilisi."
          },
          "workHours": {
            "description": "Local working hours [start, end]; default [\"09:00\",\"17:00\"].",
            "minItems": 2,
            "maxItems": 2,
            "type": "array",
            "items": {
              "type": "string",
              "pattern": "^([01]\\d|2[0-3]):[0-5]\\d$"
            }
          }
        },
        "required": [
          "label",
          "tz"
        ]
      },
      "description": "People or places the meeting must suit, each with their own time zone."
    }
  },
  "required": [
    "tz",
    "participants"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}

Comunidad

Califica este servidor

Evidencia

Observaciones recientes

verificadoversión no registrada2 herramientas