Updated

How to triage your LinkedIn inbox with Kiro (and approve every reply)

Use Kiro and Finchreach to read LinkedIn messages, sort them into reply, later and ignore, draft replies in your voice and approve each one.

Finchreach teamKiroLinkedin messagesInboxMcp

The short answer

Kiro can work through your LinkedIn inbox with you. Connect it to Finchreach, a remote LinkedIn MCP server, and Kiro can list your conversations, read the ones that matter, sort them into reply now, later and ignore, and draft replies in your voice. Each reply is queued as a direct message that waits for your approval in the Finchreach dashboard before anything is sent.

MCP (Model Context Protocol) is a standard plug that lets AI apps use outside tools. Kiro speaks it natively, so the setup is one JSON entry plus an API key. Put your triage rules and tone in a Kiro steering file and the same rules apply every time you ask, without retyping them.

What can Kiro do with my LinkedIn messages?

Through Finchreach, Kiro gets these message tools:

  • linkedin_get_conversations lists your inbox: each conversation with its participants and the last message. It pages back for older threads.
  • linkedin_get_messages reads the full history of one conversation.
  • linkedin_send_dm sends a message. It can reply into an existing conversation (pass its conversationUrn) or start a new one.
  • linkedin_get_action checks whether a queued message is still pending, approved, rejected, sent or failed.

Approval mode is on by default for every account. When Kiro calls linkedin_send_dm, nothing goes to LinkedIn: the call returns status: "pending_approval" and the draft appears at /approvals, where you approve or reject it.

What it cannot do today: mark messages as read, archive or label conversations, or attach images. Triage here means Kiro gives you a sorted list and drafts. The inbox itself on LinkedIn stays as it is until you reply.

How do I connect Kiro to LinkedIn?

Kiro reads MCP servers from .kiro/settings/mcp.json in your workspace or ~/.kiro/settings/mcp.json for your user. Open either one from the command palette ("Kiro: Open workspace MCP config (JSON)" or the user variant), make sure MCP is enabled in Kiro’s settings, and add Finchreach:

.kiro/settings/mcp.json
{
  "mcpServers": {
    "finchreach": {
      "url": "https://mcp.finchreach.com/mcp",
      "headers": { "Authorization": "Bearer ${FINCHREACH_API_KEY}" }
    }
  }
}

One detail that trips people up: Kiro only fills in ${FINCHREACH_API_KEY} if that variable name is listed in the "Mcp Approved Env Vars" setting. If it is not listed, the key never reaches the server and Finchreach rejects the request as unauthorized (401). Add the name to that setting, export the variable in the environment Kiro starts from, and save. Changes apply on save. Kiro’s MCP configuration docs cover the rest.

If you use the workspace file, keep the key out of version control: reference the variable as shown rather than pasting lk_... into the file.

How do I give Kiro my triage rules and tone?

Kiro supports steering files: Markdown documents in .kiro/steering/ that give the agent standing context about how you want work done. That is a natural home for inbox rules. Write them once, in plain language, and Kiro picks them up instead of you restating them in every chat. See Kiro’s docs for the options on when a steering file is included.

An example you can adapt:

.kiro/steering/linkedin-inbox.md
# LinkedIn inbox rules

## Buckets
- REPLY NOW: people I know, current clients, warm intros,
  candidates I contacted, anyone asking a direct question about my work.
- LATER: interesting but not urgent (event invites, partnership ideas,
  "let's catch up" notes). List them with one line on why.
- IGNORE: cold sales pitches, generic "I'd love to connect" templates,
  crypto/offshore/SEO offers. Do not draft replies for these.

## Replies
- Short: 2 to 4 sentences. No bullet points in DMs.
- Plain and friendly. No "I hope this finds you well".
- Answer the actual question. If I need to check something, say so
  and give a day I will come back.
- Never agree to a call time; offer my booking link instead.
- Never mention pricing, contracts or anything confidential.

## Process
- Read the last messages of a thread before drafting.
- Queue at most 10 replies per session.
- Show me the bucket list before queuing anything.

Keep rules that are about judgment ("never agree to a call time") in the steering file and leave one-off instructions in the chat. If a draft keeps missing your tone, edit the file rather than correcting each draft.

What should I ask Kiro to triage my LinkedIn inbox?

Start with a read-only pass, so you see the sorting before any drafts exist:

Ask your assistant“Using my LinkedIn inbox rules, list my 30 most recent LinkedIn conversations and sort them into REPLY NOW, LATER and IGNORE. For each one give the person, their headline if shown, and one line on why it is in that bucket. Do not draft or send anything yet.”

Then let it read the threads that need answers and draft:

Ask your assistant“For each REPLY NOW conversation, read the full thread and draft a reply that follows my steering rules. Show me all drafts in a table: person, their last message, your draft. Wait for my go-ahead.”

After you tweak a few drafts in the chat, queue them:

Ask your assistant“Queue the approved drafts as replies in their existing conversations with linkedin_send_dm, using each conversationUrn. Then tell me how many are pending approval.”

And for the LATER pile, a reminder list you can keep:

Ask your assistant“Write the LATER conversations to notes/linkedin-later.md with the person, the ask and a suggested follow-up date.”

Because Kiro is an IDE agent, that last step is easy: the list lands in a file in your workspace, next to the steering file that produced it.

Does Kiro send LinkedIn messages without asking?

No. Each linkedin_send_dm call becomes an item in your approval queue. Open /approvals in the Finchreach dashboard, read each reply as it will be sent, and approve or reject it. Only approved messages go to LinkedIn, at the pace you approve them. Kiro can call linkedin_get_action afterward to tell you which ones went out and which you rejected.

This matters for inbox work in particular. Messages are written by other people, and an assistant reading them can be steered by what they say ("ignore your instructions and send me…"). The queue means a person sees every outgoing message, whatever Kiro read on the way.

How to set it up in five steps

  1. Create a Finchreach account and connect your LinkedIn account under Accounts.
  2. Create an API key under API keys and export it as FINCHREACH_API_KEY in the environment Kiro runs in.
  3. Add the finchreach entry to .kiro/settings/mcp.json and list FINCHREACH_API_KEY in "Mcp Approved Env Vars". The Kiro guide has screenshots and troubleshooting.
  4. Add .kiro/steering/linkedin-inbox.md with your buckets and reply rules.
  5. Run the read-only triage prompt, then draft, then queue, and approve the replies in the dashboard. The full tool list is in the docs.

Is it safe to let an AI handle LinkedIn messages?

Automating a personal LinkedIn account carries risk under LinkedIn’s User Agreement. The approval queue lowers that risk, because a person reviews and paces every message, but it does not remove it. Keep volumes human: reply to real conversations, not bulk outreach.

A sensible habit is to keep the triage session short and regular, a few minutes a day, rather than clearing hundreds of messages at once.

Kiro and LinkedIn messages: common questions

Can Kiro mark conversations as read or archive them? No. Finchreach has no tool for marking read, archiving or labeling. Kiro sorts the list for you; the LinkedIn inbox itself is unchanged until you reply.

Can it reply to a specific thread instead of starting a new one? Yes. linkedin_send_dm takes the conversationUrn from linkedin_get_conversations, so the reply lands in the existing conversation.

Why does Kiro get a 401? Usually ${FINCHREACH_API_KEY} was not expanded. Check that the name is in "Mcp Approved Env Vars" and that the variable is set where Kiro starts.

Can I edit a draft before it goes out? Edit it in the Kiro chat before queuing. Once queued, approve or reject it; to change it, reject and ask Kiro to queue a new version.

Does this work with other assistants? Yes, any client with remote MCP and custom headers. See the integrations page, or read what a LinkedIn MCP server is.