Endpoints: 28,729MCP servers: 18,413Payout addresses: 2,071Paid calls: 1,541Letters: 14Defects: 1,323counted 3 min ago
teppi

Server definition

Hash
sha256:a1c0e2fba23c053eb7938953c6faacf4a5f504142df5d5da6bebea22a44bc7ed
What it is
What a remote MCP server returned when asked what it offers: 18 tools

The blob, as servednamed by its sha256

{ "instructions": null, "tools": [ { "description": "MUTATES YouCanBookMe data: cancels a booking. Convenience wrapper for PATCH /v1/bookings/{bookingId} with { cancelled: true } — safer and reversible (re-activate via update_booking cancelled=false) versus deleting. Returns the updated booking.", "inputSchema": { "$schema": "http://json-schema.org/draft-07/schema#", "properties": { "bookingId": { "description": "The booking id to cancel (path only; required).", "type": "string" } }, "required": [ "bookingId" ], "type": "object" }, "name": "cancel_booking", "outputSchema": null }, { "description": "MUTATES YouCanBookMe data: adds an appointment type to a profile. YCBM API: POST /v1/profiles/{profileId}/appointmenttypes/items (JSON). Required: name; use the `fields` passthrough for description, slotLength, price, etc. The path profileId is never sent in the body.", "inputSchema": { "$schema": "http://json-schema.org/draft-07/schema#", "properties": { "fields": { "additionalProperties": {}, "description": "Additional documented YCBM fields to send in the JSON write body — merged OVER the typed fields above.", "propertyNames": { "type": "string" }, "type": "object" }, "name": { "description": "The appointment type name (required).", "type": "string" }, "profileId": { "description": "The profile (booking page) id (path only; required).", "type": "string" } }, "required": [ "profileId", "name" ], "type": "object" }, "name": "create_appointment_type", "outputSchema": null }, { "description": "MUTATES YouCanBookMe data: creates a booking (appointment) on a profile. YCBM API: POST /v1/bookings (JSON). Required: profileId, startsAt, endsAt (ISO 8601 times). Optional: title, timeZone, locale, units. Complex fields like `answers` (form-field answers) and `linkFields` should be passed via the `fields` passthrough. Returns the created booking.", "inputSchema": { "$schema": "http://json-schema.org/draft-07/schema#", "properties": { "endsAt": { "description": "Booking end time, ISO 8601 (required).", "type": "string" }, "fields": { "additionalProperties": {}, "description": "Additional documented YCBM fields to send in the JSON write body — merged OVER the typed fields above.", "propertyNames": { "type": "string" }, "type": "object" }, "locale": { "description": "Locale for the booking (e.g. en-GB).", "type": "string" }, "profileId": { "description": "The profile (booking page) id to book on (required).", "type": "string" }, "startsAt": { "description": "Booking start time, ISO 8601 (required).", "type": "string" }, "timeZone": { "description": "IANA time zone for the booking (e.g. Europe/London).", "type": "string" }, "title": { "description": "Booking title.", "type": "string" }, "units": { "description": "Number of slot units to book.", "maximum": 9007199254740991, "minimum": -9007199254740991, "type": "integer" } }, "required": [ "profileId", "startsAt", "endsAt" ], "type": "object" }, "name": "create_booking", "outputSchema": null }, { "description": "MUTATES YouCanBookMe data: adds a location to a profile. YCBM API: POST /v1/profiles/{profileId}/locations (JSON). Required: kind (location type) and strategy (how it is assigned). Use the `fields` passthrough for value, notes, and other documented fields. The path profileId is never sent in the body.", "inputSchema": { "$schema": "http://json-schema.org/draft-07/schema#", "properties": { "fields": { "additionalProperties": {}, "description": "Additional documented YCBM fields to send in the JSON write body — merged OVER the typed fields above.", "propertyNames": { "type": "string" }, "type": "object" }, "kind": { "description": "The location kind/type (required).", "type": "string" }, "notes": { "description": "Notes shown with the location.", "type": "string" }, "profileId": { "description": "The profile (booking page) id (path only; required).", "type": "string" }, "strategy": { "description": "The location assignment strategy (required).", "type": "string" }, "value": { "description": "The location value (e.g. an address or link).", "type": "string" } }, "required": [ "profileId", "kind", "strategy" ], "type": "object" }, "name": "create_location", "outputSchema": null }, { "description": "MUTATES YouCanBookMe data: adds a team member to a profile. YCBM API: POST /v1/profiles/{profileId}/teammembers/items (JSON). Required: name; calendarId links the member to a calendar (find it via list_available_accounts). Use the `fields` passthrough for email, description, pic, etc. The path profileId is never sent in the body.", "inputSchema": { "$schema": "http://json-schema.org/draft-07/schema#", "properties": { "calendarId": { "description": "The calendar id to link (see list_available_accounts).", "type": "string" }, "fields": { "additionalProperties": {}, "description": "Additional documented YCBM fields to send in the JSON write body — merged OVER the typed fields above.", "propertyNames": { "type": "string" }, "type": "object" }, "name": { "description": "The team member's display name (required).", "type": "string" }, "profileId": { "description": "The profile (booking page) id (path only; required).", "type": "string" } }, "required": [ "profileId", "name" ], "type": "object" }, "name": "create_team_member", "outputSchema": null }, { "description": "Fetch a single booking (appointment) by id. YCBM API: GET /v1/bookings/{bookingId}. Use `fields` to select which fields to return. Returns the booking object.", "inputSchema": { "$schema": "http://json-schema.org/draft-07/schema#", "properties": { "bookingId": { "description": "The booking id.", "type": "string" }, "fields": { "description": "Comma-separated field paths to return (e.g. \"id,title,startsAt\"). Supports dotted paths for nested objects. Omit to get the default field set.", "type": "string" } }, "required": [ "bookingId" ], "type": "object" }, "name": "get_booking", "outputSchema": null }, { "description": "Fetch a single profile (booking page) by id. YCBM API: GET /v1/profiles/{profileId}. Use `fields` to select fields, including nested sub-resources (appointmentTypes, teamMembers, locations). Returns the profile object.", "inputSchema": { "$schema": "http://json-schema.org/draft-07/schema#", "properties": { "fields": { "description": "Comma-separated field paths to return (e.g. \"id,title,startsAt\"). Supports dotted paths for nested objects. Omit to get the default field set.", "type": "string" }, "profileId": { "description": "The profile (booking page) id.", "type": "string" } }, "required": [ "profileId" ], "type": "object" }, "name": "get_profile", "outputSchema": null }, { "description": "List the appointment types configured on a profile (booking page). YCBM API: GET /v1/profiles/{profileId} with an appointmentTypes field selection. Returns the profile's appointmentTypes block (each with id, name, description, slotLength, price).", "inputSchema": { "$schema": "http://json-schema.org/draft-07/schema#", "properties": { "profileId": { "description": "The profile (booking page) id.", "type": "string" } }, "required": [ "profileId" ], "type": "object" }, "name": "list_appointment_types", "outputSchema": null }, { "description": "List the accounts/calendars available to your account — used to find the calendarId for a team member. YCBM API: GET /v1/{accountId}/availableAccounts (accountId is taken from your configured credentials). Returns a JSON array.", "inputSchema": { "$schema": "http://json-schema.org/draft-07/schema#", "properties": {}, "type": "object" }, "name": "list_available_accounts", "outputSchema": null }, { "description": "List bookings (appointments) on the YouCanBookMe account. YCBM API: GET /v1/bookings. Filter by profileId (booking page), an after/before time window, cancelled status, and a free-text searchText; select fields with `fields`. Paginated via page (0-based) + maxResults. Returns a JSON array of bookings.", "inputSchema": { "$schema": "http://json-schema.org/draft-07/schema#", "properties": { "after": { "description": "Only bookings starting AFTER this time (ISO 8601, e.g. 2026-07-01T00:00:00Z).", "type": "string" }, "before": { "description": "Only bookings starting BEFORE this time (ISO 8601).", "type": "string" }, "cancelled": { "description": "Filter by cancelled status: true = only cancelled, false = only active. Omit for all.", "type": "boolean" }, "fields": { "description": "Comma-separated field paths to return (e.g. \"id,title,startsAt\"). Supports dotted paths for nested objects. Omit to get the default field set.", "type": "string" }, "maxResults": { "description": "Maximum records per page (page size). Defaults to the API's own default when omitted.", "maximum": 1000, "minimum": 1, "type": "integer" }, "page": { "description": "Pagination page number, 0-based (offset-based paging). Use with maxResults.", "maximum": 9007199254740991, "minimum": 0, "type": "integer" }, "params": { "additionalProperties": { "anyOf": [ { "type": "string" }, { "type": "number" }, { "type": "boolean" } ] }, "description": "Additional documented query-string filters to send verbatim (merged with the typed params above).", "propertyNames": { "type": "string" }, "type": "object" }, "profileId": { "description": "Restrict to bookings on this profile (booking page) id.", "type": "string" }, "searchText": { "description": "Free-text search across booking fields (e.g. attendee name/email).", "type": "string" } }, "type": "object" }, "name": "list_bookings", "outputSchema": null }, { "description": "List the locations configured on a profile (booking page). YCBM API: GET /v1/profiles/{profileId} with a locations field selection. Returns the profile's locations block (each with id, kind, value, notes, strategy).", "inputSchema": { "$schema": "http://json-schema.org/draft-07/schema#", "properties": { "profileId": { "description": "The profile (booking page) id.", "type": "string" } }, "required": [ "profileId" ], "type": "object" }, "name": "list_locations", "outputSchema": null }, { "description": "List all profiles (booking pages) on the account. YCBM API: GET /v1/profiles. A profile is a bookable page with its own subdomain, appointment types, team members, and locations. Use `fields` to select fields (e.g. \"id,title,subdomain\"). Paginated via page (0-based) + maxResults. Returns a JSON array of profiles.", "inputSchema": { "$schema": "http://json-schema.org/draft-07/schema#", "properties": { "fields": { "description": "Comma-separated field paths to return (e.g. \"id,title,startsAt\"). Supports dotted paths for nested objects. Omit to get the default field set.", "type": "string" }, "maxResults": { "description": "Maximum records per page (page size). Defaults to the API's own default when omitted.", "maximum": 1000, "minimum": 1, "type": "integer" }, "page": { "description": "Pagination page number, 0-based (offset-based paging). Use with maxResults.", "maximum": 9007199254740991, "minimum": 0, "type": "integer" }, "params": { "additionalProperties": { "anyOf": [ { "type": "string" }, { "type": "number" }, { "type": "boolean" } ] }, "description": "Additional documented query-string filters to send verbatim (merged with the typed params above).", "propertyNames": { "type": "string" }, "type": "object" } }, "type": "object" }, "name": "list_profiles", "outputSchema": null }, { "description": "List the team members configured on a profile (booking page). YCBM API: GET /v1/profiles/{profileId} with a teamMembers field selection. Returns the profile's teamMembers block (each member has id, name, email, description, pic, calendarId).", "inputSchema": { "$schema": "http://json-schema.org/draft-07/schema#", "properties": { "profileId": { "description": "The profile (booking page) id.", "type": "string" } }, "required": [ "profileId" ], "type": "object" }, "name": "list_team_members", "outputSchema": null }, { "description": "MUTATES YouCanBookMe data: updates an appointment type on a profile. YCBM API: PATCH /v1/profiles/{profileId}/appointmenttypes/items/{appointmentTypeId} (JSON, partial update). Pass changed fields (name, description, slotLength, price, ...) via the `fields` passthrough. Path ids are never sent in the body.", "inputSchema": { "$schema": "http://json-schema.org/draft-07/schema#", "properties": { "appointmentTypeId": { "description": "The appointment type id to update (path only; required).", "type": "string" }, "fields": { "additionalProperties": {}, "description": "Additional documented YCBM fields to send in the JSON write body — merged OVER the typed fields above.", "propertyNames": { "type": "string" }, "type": "object" }, "profileId": { "description": "The profile (booking page) id (path only; required).", "type": "string" } }, "required": [ "profileId", "appointmentTypeId" ], "type": "object" }, "name": "update_appointment_type", "outputSchema": null }, { "description": "MUTATES YouCanBookMe data: updates an existing booking (reschedule, rename, mark cancelled/no-show). YCBM API: PATCH /v1/bookings/{bookingId} (JSON, partial update). Set any of title/startsAt/endsAt/cancelled/noShow/timeZone/locale/units; use the `fields` passthrough for answers/linkFields or other documented fields. The path id is never sent in the body.", "inputSchema": { "$schema": "http://json-schema.org/draft-07/schema#", "properties": { "bookingId": { "description": "The booking id to update (path only; required).", "type": "string" }, "cancelled": { "description": "Set true to cancel the booking, false to un-cancel.", "type": "boolean" }, "endsAt": { "description": "New end time, ISO 8601 (reschedule).", "type": "string" }, "fields": { "additionalProperties": {}, "description": "Additional documented YCBM fields to send in the JSON write body — merged OVER the typed fields above.", "propertyNames": { "type": "string" }, "type": "object" }, "locale": { "description": "New locale.", "type": "string" }, "noShow": { "description": "Mark the attendee as a no-show (true) or not (false).", "type": "boolean" }, "startsAt": { "description": "New start time, ISO 8601 (reschedule).", "type": "string" }, "timeZone": { "description": "New IANA time zone.", "type": "string" }, "title": { "description": "New booking title.", "type": "string" }, "units": { "description": "New number of slot units.", "maximum": 9007199254740991, "minimum": -9007199254740991, "type": "integer" } }, "required": [ "bookingId" ], "type": "object" }, "name": "update_booking", "outputSchema": null }, { "description": "MUTATES YouCanBookMe data: updates a profile's (booking page) configuration. YCBM API: PATCH /v1/profiles/{profileId} (JSON, partial update). Pass the fields to change via the `fields` passthrough (e.g. { title, subdomain, ... }) — profile fields are numerous and use YCBM's own names. The path id is never sent in the body.", "inputSchema": { "$schema": "http://json-schema.org/draft-07/schema#", "properties": { "fields": { "additionalProperties": {}, "description": "Additional documented YCBM fields to send in the JSON write body — merged OVER the typed fields above.", "propertyNames": { "type": "string" }, "type": "object" }, "profileId": { "description": "The profile (booking page) id to update (path only; required).", "type": "string" } }, "required": [ "profileId" ], "type": "object" }, "name": "update_profile", "outputSchema": null }, { "description": "MUTATES YouCanBookMe data: updates a team member on a profile. YCBM API: PATCH /v1/profiles/{profileId}/teammembers/items/{teamMemberId} (JSON, partial update). Pass changed fields (name, email, description, calendarId, ...) via the `fields` passthrough. Path ids are never sent in the body.", "inputSchema": { "$schema": "http://json-schema.org/draft-07/schema#", "properties": { "fields": { "additionalProperties": {}, "description": "Additional documented YCBM fields to send in the JSON write body — merged OVER the typed fields above.", "propertyNames": { "type": "string" }, "type": "object" }, "profileId": { "description": "The profile (booking page) id (path only; required).", "type": "string" }, "teamMemberId": { "description": "The team member id to update (path only; required).", "type": "string" } }, "required": [ "profileId", "teamMemberId" ], "type": "object" }, "name": "update_team_member", "outputSchema": null }, { "description": "Power-user escape hatch: GET any YCBM API path not wrapped by a dedicated tool. READ-ONLY — only GET is allowed. Pass the FULL API path after the origin, starting with a slash, INCLUDING any query string, e.g. \"/v1/bookings?maxResults=5\" or \"/v1/profiles\". Returns the parsed JSON.", "inputSchema": { "$schema": "http://json-schema.org/draft-07/schema#", "properties": { "path": { "description": "Full API path after the origin, starting with \"/\", e.g. \"/v1/bookings?maxResults=5\".", "type": "string" } }, "required": [ "path" ], "type": "object" }, "name": "youcanbookme_request", "outputSchema": null } ] }
Verify it yourselfcurl -s https://api.teppi.xyz/v1/evidence/sha256:a1c0e2fba23c053eb7938953c6faacf4a5f504142df5d5da6bebea22a44bc7ed | sha256sum