Skip to main content
Glama

List email templates

lnkdrp_list_email_templates
Read-onlyIdempotent

The workspace's email templates this person can see, most recently updated first, without their bodies: name, description, format, align, subject, tags (key, entity, description, required, example), tagsCount, state, visibility, owner and createdBy. Team templates and their own private ones are listed; other people's private templates are not. builtInTags lists the tags LinkDrop fills for each recipient, with what each stands for. query searches the name, subject, description and {{tag}} keys (any part; with no word of three or more letters, the name only), the body as read, tag descriptions and document slot titles (whole words and their forms; "exact phrase" in quotes), and workspace tags (labels), projects and linked documents by name; drafts and older versions are not searched. With a word of three or more letters, rows come best match first and each carries match { in, snippet, name }: in is name, subject, description, tag key, label, project, document or body; snippet is the matching text; name is the {{tag}}, label, project or document. totalCapped true means more than 500 matched and total is a lower bound. searchIn: name searches the name only. More filters, each narrowing the list and the search: format (text or html), madeBy (person or agent), ownerId (a member's id, or me), hasDocument, tagKey (a {{tag}} key), createdFrom and createdTo, updatedFrom and updatedTo (updatedAfter and updatedBefore are their older names), sent (ever sent), hasDrafts (open drafts). order: relevance (the default with a query), updated (the default otherwise), name, newest or mostSent. state: active (the default) or archived; deleted templates are in lnkdrp_list_deleted. visibility filters: team, private (their own private ones), or mine (every template they own). createdBy says who made it: name, via (web, api or mcp) and the agent when known; "Former member" for someone no longer in the workspace. Each row also has labels (the workspace's tags on it, from lnkdrp_tag; not its {{…}} tags) and projects (the projects it is filed under). usage counts how much it was used: drops (the drops that use it, any state), singleEmails (emails sent from it on their own, outside a drop) and emailsSent (every email sent from it); dry runs are not counted, and private drops and emails are counted but not named. projectId keeps the templates filed under that project; docId keeps those with a link slot on that document (a document in a locked project this person is outside gives an empty page); labels keeps those carrying any of the named workspace tags. Dates: a bare date (2026-10-28) is that whole day in the workspace's time zone (UTC when it has none) and a To date includes that day; a time with Z or an offset is that exact instant; the answer's dateRange gives the time zone and the exact instants used. Page-based: total says how many match.

Input Schema

NameRequiredDescriptionDefault
pageNo1-based page number.
sentNotrue: templates an email was ever sent from. false: none sent yet.
docIdNoOnly email templates with a link slot on this document (24 hex chars).
limitNoTemplates per page (1-100).
orderNorelevance: best match (the default with a query). updated: last edited first (the default otherwise). name: A-Z. newest: created most recently. mostSent: most emails sent.
queryNoSearches name, subject, description, body text, {{tag}} keys, workspace tags, projects and linked document names, case-insensitively. Body text matches whole words and their forms; "exact phrase" in quotes.
stateNoactive (default): templates in use. archived: kept templates that cannot be edited or used to render until unarchived.
formatNoOnly templates of this format.
labelsNoOnly email templates carrying any of these workspace tags (lnkdrp_tag), by name or slug (1-20).
madeByNoperson: made in the app. agent: made through the API or an agent.
tagKeyNoOnly templates that declare this {{tag}} key, e.g. contact.firstName (braces optional, any case).
ownerIdNoOnly templates this member owns, team ones included: a user id (24 hex chars), or me.
searchInNoall (default): everything query searches. name: the template name only.
createdToNoOnly templates created on or before this date (that whole day) or time.
hasDraftsNotrue: templates with an open draft. false: none open.
projectIdNoOnly email templates filed under this project (24 hex chars).
updatedToNoOnly templates last changed on or before this date (that whole day) or time.
visibilityNoall (default): every email template this person can see. mine: every template they own. team: shared ones. private: their own private ones.
createdFromNoOnly templates created on or after this date (2026-10-28) or time.
hasDocumentNotrue: templates with a document slot. false: templates without one.
updatedFromNoOnly templates last changed on or after this date (2026-10-28) or time.
updatedAfterNoThe older name of updatedFrom: only templates last edited on or after this date (2026-10-28) or time.
updatedBeforeNoThe older name of updatedTo: only templates last edited on or before this date (that whole day) or time.

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed16 schema fields changed
    • addedInput schema / properties / createdFrom
      Added value: +{
      +  "description": "Only templates created on or after this date (2026-10-28) or time.",
      +  "maxLength": 40,
      +  "pattern": "^\\d{4}-\\d{2}-\\d{2}",
      +  "type": "string"
      +}
    • addedInput schema / properties / createdTo
      Added value: +{
      +  "description": "Only templates created on or before this date (that whole day) or time.",
      +  "maxLength": 40,
      +  "pattern": "^\\d{4}-\\d{2}-\\d{2}",
      +  "type": "string"
      +}
    • addedInput schema / properties / format
      Added value: +{
      +  "description": "Only templates of this format.",
      +  "enum": [
      +    "text",
      +    "html"
      +  ],
      +  "type": "string"
      +}
    • addedInput schema / properties / hasDocument
      Added value: +{
      +  "description": "true: templates with a document slot. false: templates without one.",
      +  "type": "boolean"
      +}
    • addedInput schema / properties / hasDrafts
      Added value: +{
      +  "description": "true: templates with an open draft. false: none open.",
      +  "type": "boolean"
      +}
    • addedInput schema / properties / madeBy
      Added value: +{
      +  "description": "person: made in the app. agent: made through the API or an agent.",
      +  "enum": [
      +    "person",
      +    "agent"
      +  ],
      +  "type": "string"
      +}
    • addedInput schema / properties / order
      Added value: +{
      +  "description": "relevance: best match (the default with a query). updated: last edited first (the default otherwise). name: A-Z. newest: created most recently. mostSent: most emails sent.",
      +  "enum": [
      +    "relevance",
      +    "updated",
      +    "name",
      +    "newest",
      +    "mostSent"
      +  ],
      +  "type": "string"
      +}
    • addedInput schema / properties / ownerId
      Added value: +{
      +  "description": "Only templates this member owns, team ones included: a user id (24 hex chars), or me.",
      +  "pattern": "^(me|[0-9a-fA-F]{24})$",
      +  "type": "string"
      +}
    • changedInput schema / properties / query / description
      Previous value: -"Match the template name, case-insensitively."New value: +"Searches name, subject, description, body text, {{tag}} keys, workspace tags, projects and linked document names, case-insensitively. Body text matches whole words and their forms; \"exact phrase\" in quotes."
    • addedInput schema / properties / searchIn
      Added value: +{
      +  "description": "all (default): everything query searches. name: the template name only.",
      +  "enum": [
      +    "all",
      +    "name"
      +  ],
      +  "type": "string"
      +}
    • addedInput schema / properties / sent
      Added value: +{
      +  "description": "true: templates an email was ever sent from. false: none sent yet.",
      +  "type": "boolean"
      +}
    • addedInput schema / properties / tagKey
      Added value: +{
      +  "description": "Only templates that declare this {{tag}} key, e.g. contact.firstName (braces optional, any case).",
      +  "maxLength": 64,
      +  "minLength": 1,
      +  "type": "string"
      +}
    • addedInput schema / properties / updatedAfter
      Added value: +{
      +  "description": "The older name of updatedFrom: only templates last edited on or after this date (2026-10-28) or time.",
      +  "maxLength": 40,
      +  "pattern": "^\\d{4}-\\d{2}-\\d{2}",
      +  "type": "string"
      +}
    • addedInput schema / properties / updatedBefore
      Added value: +{
      +  "description": "The older name of updatedTo: only templates last edited on or before this date (that whole day) or time.",
      +  "maxLength": 40,
      +  "pattern": "^\\d{4}-\\d{2}-\\d{2}",
      +  "type": "string"
      +}
    • addedInput schema / properties / updatedFrom
      Added value: +{
      +  "description": "Only templates last changed on or after this date (2026-10-28) or time.",
      +  "maxLength": 40,
      +  "pattern": "^\\d{4}-\\d{2}-\\d{2}",
      +  "type": "string"
      +}
    • addedInput schema / properties / updatedTo
      Added value: +{
      +  "description": "Only templates last changed on or before this date (that whole day) or time.",
      +  "maxLength": 40,
      +  "pattern": "^\\d{4}-\\d{2}-\\d{2}",
      +  "type": "string"
      +}
  2. Changed5 schema fields changed
    • addedInput schema / properties / docId
      Added value: +{
      +  "description": "Only email templates with a link slot on this document (24 hex chars).",
      +  "pattern": "^[a-fA-F0-9]{24}$",
      +  "type": "string"
      +}
    • addedInput schema / properties / labels
      Added value: +{
      +  "description": "Only email templates carrying any of these workspace tags (lnkdrp_tag), by name or slug (1-20).",
      +  "items": {
      +    "maxLength": 60,
      +    "minLength": 1,
      +    "pattern": "^[^,]*$",
      +    "type": "string"
      +  },
      +  "maxItems": 20,
      +  "minItems": 1,
      +  "type": "array"
      +}
    • addedInput schema / properties / projectId
      Added value: +{
      +  "description": "Only email templates filed under this project (24 hex chars).",
      +  "pattern": "^[a-fA-F0-9]{24}$",
      +  "type": "string"
      +}
    • addedInput schema / properties / state
      Added value: +{
      +  "description": "active (default): templates in use. archived: kept templates that cannot be edited or used to render until unarchived.",
      +  "enum": [
      +    "active",
      +    "archived"
      +  ],
      +  "type": "string"
      +}
    • addedInput schema / properties / visibility
      Added value: +{
      +  "description": "all (default): every email template this person can see. mine: every template they own. team: shared ones. private: their own private ones.",
      +  "enum": [
      +    "all",
      +    "mine",
      +    "team",
      +    "private"
      +  ],
      +  "type": "string"
      +}
  3. Added

TDQS

A4.2/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Goes well past the readOnly/idempotent/non-destructive annotations: it discloses the visibility rule (team plus your own private templates, never others' private ones), that totalCapped=true means total is a lower bound past 500 matches, that dry runs are excluded from usage counts and private drops/emails are counted but not named, that a locked-project document yields an empty page, and how bare dates resolve against the workspace time zone.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Everything sits in one enormous run-on paragraph, with enum values (format, order, state, visibility) re-explained despite 100% schema coverage. The purpose is front-loaded and much of the length is justified by documenting response fields and the match object in the absence of an output schema, but it is not efficiently structured.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a 23-parameter tool with no output schema, the description carries the return-shape burden: row fields, best-match ordering with match { in, snippet, name }, totalCapped, total, dateRange, and the createdBy 'Former member' case. Combined with date-resolution rules and pagination ('Page-based: total says how many match'), an agent has what it needs to call and interpret results.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so baseline is 3; the description still adds meaning beyond it — it declares that filters combine by narrowing (AND), that labels matches 'any of the named' workspace tags distinct from {{…}} tags, that docId requires a link slot with a lock-related empty-page edge case, and that updatedAfter/updatedBefore are legacy aliases. It does restate several enums near-verbatim, so it isn't purely additive.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

Opens with a specific verb+resource and scope: 'The workspace's email templates this person can see', immediately followed by 'without their bodies', which distinguishes it from lnkdrp_get_email_template. It also names lnkdrp_list_deleted for deleted templates and lnkdrp_tag for workspace tags, though it never explicitly routes to the single-template read or version-list siblings.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

States the important selection context: default ordering differs with/without a query ('relevance (the default with a query), updated (the default otherwise)'), default state is active with archived/deleted routed elsewhere, and every filter is framed as 'each narrowing the list and the search' (AND semantics, not stated in the schema). It lacks explicit 'don't use this when…' exclusions, keeping it below a 5.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.

Resources