{
  "service": "tldv",
  "displayName": "tl;dv",
  "categories": [
    "Productivity",
    "Communication"
  ],
  "authTypes": [
    "api_key"
  ],
  "auth": [
    {
      "type": "api_key",
      "label": "API Key",
      "placeholder": "TLDV_API_KEY",
      "description": "tl;dv API key sent with the x-api-key header. Generate it from the tl;dv API keys page: https://tldv.io/app/settings/personal-settings/api-keys.",
      "extraFields": []
    }
  ],
  "homepageUrl": "https://tldv.io",
  "actions": [
    {
      "id": "tldv.get_meeting",
      "service": "tldv",
      "name": "get_meeting",
      "description": "Get a tl;dv meeting by its identifier.",
      "requiredScopes": [],
      "providerPermissions": [],
      "inputSchema": {
        "type": "object",
        "properties": {
          "meetingId": {
            "type": "string",
            "minLength": 1,
            "description": "The tl;dv meeting identifier."
          }
        },
        "additionalProperties": false,
        "description": "The input payload for selecting a tl;dv meeting."
      },
      "outputSchema": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "description": "The tl;dv meeting identifier."
          },
          "name": {
            "type": "string",
            "description": "The meeting name."
          },
          "happenedAt": {
            "type": "string",
            "description": "The date or datetime when the meeting happened."
          },
          "url": {
            "type": "string",
            "description": "The tl;dv web URL for opening the meeting."
          },
          "duration": {
            "type": "number",
            "description": "The meeting duration in seconds."
          },
          "organizer": {
            "type": "object",
            "properties": {
              "name": {
                "type": "string",
                "description": "The user's display name."
              },
              "email": {
                "type": "string",
                "description": "The user's email address."
              }
            },
            "additionalProperties": true,
            "description": "A tl;dv user object."
          },
          "invitees": {
            "type": "array",
            "items": {
              "type": "object",
              "properties": {
                "name": {
                  "type": "string",
                  "description": "The user's display name."
                },
                "email": {
                  "type": "string",
                  "description": "The user's email address."
                }
              },
              "additionalProperties": true,
              "description": "A tl;dv user object."
            },
            "description": "Users invited to or participating in the meeting."
          },
          "template": {
            "description": "The tl;dv template attached to the meeting."
          },
          "extraProperties": {
            "type": "object",
            "properties": {},
            "additionalProperties": true,
            "description": "Additional tl;dv meeting properties."
          }
        },
        "additionalProperties": true,
        "description": "A tl;dv meeting object."
      }
    },
    {
      "id": "tldv.get_notes",
      "service": "tldv",
      "name": "get_notes",
      "description": "Get markdown and structured AI notes for a tl;dv meeting.",
      "requiredScopes": [],
      "providerPermissions": [],
      "inputSchema": {
        "type": "object",
        "properties": {
          "meetingId": {
            "type": "string",
            "minLength": 1,
            "description": "The tl;dv meeting identifier."
          }
        },
        "additionalProperties": false,
        "description": "The input payload for selecting a tl;dv meeting."
      },
      "outputSchema": {
        "type": "object",
        "properties": {
          "structuredNotes": {
            "type": "array",
            "items": {
              "type": "object",
              "properties": {
                "segmentId": {
                  "type": "string",
                  "description": "The tl;dv segment identifier attached to the note."
                },
                "timestamp": {
                  "type": "number",
                  "description": "The note timestamp in seconds."
                },
                "text": {
                  "type": "string",
                  "description": "The note text."
                },
                "topicId": {
                  "type": "string",
                  "description": "The topic identifier for the note."
                }
              },
              "additionalProperties": false,
              "description": "A structured tl;dv meeting note."
            },
            "description": "The structured notes returned by tl;dv."
          },
          "markdownContent": {
            "type": "string",
            "description": "The meeting notes as Markdown."
          },
          "topics": {
            "type": "array",
            "items": {
              "type": "object",
              "properties": {
                "id": {
                  "type": "string",
                  "description": "The topic identifier."
                },
                "order": {
                  "type": "number",
                  "description": "The topic sort order."
                },
                "title": {
                  "type": "string",
                  "description": "The topic title."
                },
                "summary": {
                  "type": "string",
                  "description": "The topic summary."
                }
              },
              "additionalProperties": false,
              "description": "A tl;dv AI note topic."
            },
            "description": "The AI topics returned by tl;dv."
          }
        },
        "additionalProperties": false,
        "description": "The tl;dv meeting notes response."
      }
    },
    {
      "id": "tldv.get_transcript",
      "service": "tldv",
      "name": "get_transcript",
      "description": "Get the structured transcript for a tl;dv meeting.",
      "requiredScopes": [],
      "providerPermissions": [],
      "inputSchema": {
        "type": "object",
        "properties": {
          "meetingId": {
            "type": "string",
            "minLength": 1,
            "description": "The tl;dv meeting identifier."
          }
        },
        "additionalProperties": false,
        "description": "The input payload for selecting a tl;dv meeting."
      },
      "outputSchema": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "description": "The transcript identifier."
          },
          "meetingId": {
            "type": "string",
            "description": "The tl;dv meeting identifier."
          },
          "data": {
            "type": "array",
            "items": {
              "type": "object",
              "properties": {
                "speaker": {
                  "type": "string",
                  "description": "The speaker for this transcript sentence."
                },
                "text": {
                  "type": "string",
                  "description": "The sentence text."
                },
                "startTime": {
                  "type": "number",
                  "description": "The sentence start time in seconds."
                },
                "endTime": {
                  "type": "number",
                  "description": "The sentence end time in seconds."
                }
              },
              "additionalProperties": false,
              "description": "A sentence from a tl;dv transcript."
            },
            "description": "The transcript sentences returned by tl;dv."
          }
        },
        "additionalProperties": false,
        "description": "The tl;dv transcript response."
      }
    },
    {
      "id": "tldv.import_meeting",
      "service": "tldv",
      "name": "import_meeting",
      "description": "Submit a publicly accessible recording URL to tl;dv for meeting import and receive the created job payload.",
      "requiredScopes": [],
      "providerPermissions": [],
      "inputSchema": {
        "type": "object",
        "properties": {
          "name": {
            "type": "string",
            "minLength": 1,
            "description": "The name of the meeting or recording to import."
          },
          "url": {
            "type": "string",
            "description": "The publicly accessible recording URL that tl;dv should import. Supported media formats include mp3, mp4, wav, m4a, mkv, mov, avi, wma, and flac.",
            "format": "uri"
          },
          "happenedAt": {
            "type": "string",
            "description": "The meeting or recording datetime. If omitted, tl;dv uses the current date.",
            "format": "date-time"
          },
          "dryRun": {
            "type": "boolean",
            "description": "Whether tl;dv should validate the import without persisting or processing it."
          },
          "participants": {
            "type": "array",
            "items": {
              "type": "string",
              "description": "A participant email address.",
              "format": "email"
            },
            "description": "Email addresses of participants invited to the meeting or recording."
          }
        },
        "additionalProperties": false,
        "required": [
          "name",
          "url"
        ],
        "description": "The input payload for importing a meeting recording into tl;dv."
      },
      "outputSchema": {
        "type": "object",
        "properties": {
          "success": {
            "type": "boolean",
            "description": "Whether tl;dv accepted the import request."
          },
          "jobId": {
            "type": "string",
            "description": "The tl;dv job identifier created for the import."
          },
          "message": {
            "type": "string",
            "description": "The message returned by tl;dv for the import request."
          }
        },
        "additionalProperties": false,
        "description": "The tl;dv meeting import job response."
      }
    },
    {
      "id": "tldv.list_meetings",
      "service": "tldv",
      "name": "list_meetings",
      "description": "List tl;dv meetings available to the API key with optional search, date, participation, and meeting-type filters.",
      "requiredScopes": [],
      "providerPermissions": [],
      "inputSchema": {
        "type": "object",
        "properties": {
          "query": {
            "type": "string",
            "minLength": 1,
            "description": "The text query to search for."
          },
          "page": {
            "type": "integer",
            "minimum": 1,
            "description": "The page number to return."
          },
          "limit": {
            "type": "integer",
            "minimum": 1,
            "maximum": 100,
            "description": "The number of meetings to return per page."
          },
          "from": {
            "anyOf": [
              {
                "type": "string",
                "description": "A calendar date accepted by tl;dv.",
                "format": "date"
              },
              {
                "type": "string",
                "description": "A date-time string accepted by tl;dv.",
                "format": "date-time"
              }
            ],
            "description": "The date or datetime boundary accepted by tl;dv."
          },
          "to": {
            "anyOf": [
              {
                "type": "string",
                "description": "A calendar date accepted by tl;dv.",
                "format": "date"
              },
              {
                "type": "string",
                "description": "A date-time string accepted by tl;dv.",
                "format": "date-time"
              }
            ],
            "description": "The date or datetime boundary accepted by tl;dv."
          },
          "onlyParticipated": {
            "type": "boolean",
            "description": "Whether to only return meetings the API key owner participated in."
          },
          "meetingType": {
            "type": "string",
            "enum": [
              "internal",
              "external"
            ],
            "description": "The meeting type filter."
          }
        },
        "additionalProperties": false,
        "description": "The input payload for listing tl;dv meetings."
      },
      "outputSchema": {
        "type": "object",
        "properties": {
          "page": {
            "type": "number",
            "description": "The current page number."
          },
          "pages": {
            "type": "number",
            "description": "The total number of available pages."
          },
          "total": {
            "type": "number",
            "description": "The total number of matching meetings."
          },
          "pageSize": {
            "type": "number",
            "description": "The number of meetings returned per page."
          },
          "results": {
            "type": "array",
            "items": {
              "type": "object",
              "properties": {
                "id": {
                  "type": "string",
                  "description": "The tl;dv meeting identifier."
                },
                "name": {
                  "type": "string",
                  "description": "The meeting name."
                },
                "happenedAt": {
                  "type": "string",
                  "description": "The date or datetime when the meeting happened."
                },
                "url": {
                  "type": "string",
                  "description": "The tl;dv web URL for opening the meeting."
                },
                "duration": {
                  "type": "number",
                  "description": "The meeting duration in seconds."
                },
                "organizer": {
                  "type": "object",
                  "properties": {
                    "name": {
                      "type": "string",
                      "description": "The user's display name."
                    },
                    "email": {
                      "type": "string",
                      "description": "The user's email address."
                    }
                  },
                  "additionalProperties": true,
                  "description": "A tl;dv user object."
                },
                "invitees": {
                  "type": "array",
                  "items": {
                    "type": "object",
                    "properties": {
                      "name": {
                        "type": "string",
                        "description": "The user's display name."
                      },
                      "email": {
                        "type": "string",
                        "description": "The user's email address."
                      }
                    },
                    "additionalProperties": true,
                    "description": "A tl;dv user object."
                  },
                  "description": "Users invited to or participating in the meeting."
                },
                "template": {
                  "description": "The tl;dv template attached to the meeting."
                },
                "extraProperties": {
                  "type": "object",
                  "properties": {},
                  "additionalProperties": true,
                  "description": "Additional tl;dv meeting properties."
                }
              },
              "additionalProperties": true,
              "description": "A tl;dv meeting object."
            },
            "description": "The meetings returned by tl;dv."
          }
        },
        "additionalProperties": false,
        "description": "The paginated tl;dv meetings response."
      }
    }
  ]
}
