Skip to main content
Glama

Follow Up on Applications

aiapplyd_manage_follow_ups
Destructive

Follow up on applications that have gone quiet. action "list" shows the applications whose follow-up is due, most urgent first; "history" shows the follow-ups already sent; "draft" writes a follow-up for one application_id and spends…

Instructions

Follow up on applications that have gone quiet. action "list" shows the applications whose follow-up is due, most urgent first; "history" shows the follow-ups already sent; "draft" writes a follow-up for one application_id and spends tokens; "send" emails it to the address in to, from the user's connected Gmail or Outlook, under the user's name, and cannot be undone; "record_sent" records a follow-up the user sent themselves, for example on LinkedIn. Send only on the user's explicit go-ahead: show the exact subject and text first, then send it only after they say yes to that text. Sending needs a connected Gmail or Outlook; without one, the user sends it themselves and you record it with record_sent. On a timeout or an error from send, call action history before sending again. Do not use it to answer an email an employer sent; use aiapplyd_reply_to_email. Next: action draft for an application from the list.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
toNoFor send: the recipient's email address, as the user gave it.
bodyNoFor send and record_sent: the message text, at least 20 characters. For send, the exact text the user approved.
actionYeslist: the follow-ups that are due. history: the follow-ups already sent. draft: write one for application_id (spends tokens). send: email it from the user's connected mailbox (needs application_id, to, subject and body). record_sent: record one the user sent themselves (needs application_id and body).
cursorNoFor history: the cursor from the previous page. Omit it for the newest.
channelNoFor record_sent: where the user sent it. Defaults to email.
subjectNoFor send: the subject line. Optional for record_sent.
recipientNoFor record_sent: who it went to, an email address or a LinkedIn handle.
application_idNoThe application, from action list or aiapplyd_get_applications. Required for draft, send and record_sent.

Output Schema

TableJSON Schema
NameRequiredDescriptionDefault
draftYesaction draft: the drafted message. Nothing was sent.
actionYes
historyYesaction history: follow-ups already sent, newest first.
recordedYesaction send or record_sent: the follow-up count after it was recorded.
followUpsYesaction list: applications whose follow-up is due, most urgent first.
nextCursorYesaction history: pass as cursor for the next page. Null on the last page.
notConfirmedYesTrue when the user declined the confirmation and nothing was sent.

Schema Changelog

Changes observed during successful MCP inspections.

  1. Addedv1.9.0

TDQS

A4.8/5.0
Behavior5/5

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

The annotations only flag destructive/openWorld/non-idempotent generically; the description concretizes them: send "cannot be undone", draft "spends tokens", send requires a connected Gmail or Outlook under the user's own name, and the exact approved text must be shown before sending. It also prescribes recovery behavior on timeout or error (call action history before retrying), which is behavior an agent cannot infer from annotations or schema.

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

Conciseness4/5

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

The critical constraint (explicit user approval before send) is front-loaded after the action breakdown, and the safety-relevant sentences (irreversibility, mailbox dependency, retry rule) are all load-bearing. It is dense but not padded; the only mild redundancy is restating per-action parameter needs that the schema enum also lists.

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?

An output schema exists, so return shape needn't be described. For an 8-parameter, multi-mode, destructive tool, the description covers consent, auth dependency, cost, failure recovery, ordering, and sibling routing — nothing an agent needs in order to call any action correctly is missing.

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% and the action enum already documents per-action parameter needs, so the baseline is 3. The description still adds value by mapping actions to their side effects and ordering (list = most urgent first) and by tying parameters to workflow steps, though it largely mirrors the enum text rather than adding new syntax.

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

Purpose5/5

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

Opens with a specific verb+resource+scope ("Follow up on applications that have gone quiet") and then decomposes the five action modes so the agent knows exactly what the tool does in each mode. It explicitly separates itself from the closest confusable sibling (aiapplyd_reply_to_email) rather than leaving that to inference.

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

Usage Guidelines5/5

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

Gives explicit when-to-use guidance ("Next: action draft for an application from the list"), a when-not-to-use exclusion ("Do not use it to answer an email an employer sent; use aiapplyd_reply_to_email"), a required consent protocol for send, and a fallback path when no mailbox is connected. That is routing, prerequisites, and alternatives in one place.

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