Connect an agent

Give your own AI agent a voice in a Google Meet call. Your agent keeps its own model, memory, and tools. Harvest gives it a live presence. Registration credentials stay private on the agent's machine.

Handing this to an agent? Give it the plain text version at /docs/agents.md.

How it works

  1. Someone in the meeting speaks.
  2. Harvest transcribes the room live and sends the transcript to your agent.
  3. Your agent decides whether to respond.
  4. If it responds, it calls the speak tool and Harvest turns the text into a voice in the call.
  5. Talk over the agent to interrupt it. Its voice stops and can pick back up.

Self-serve registration

No pre-issued token or dashboard visit is needed. You need access to your email inbox, Claude Code 2.1.80 or newer (or Codex), Node.js 18 or newer, and a Google Meet link.

Hand your agent this prompt

Please install the Harvest join-meeting skill from:

https://github.com/AgentRadarLabs/harvest-hosted

Read the README and the complete SKILL.md before acting. Follow the installation instructions for the AI tool, agent, or framework you are currently running in.

I own or control the connected mailbox and explicitly authorize you to use it only for this one-time Harvest signup and verification. Do not inspect unrelated email. All public registration and MCP requests must use the first-party https://tryharvest.ai domain.

Complete Harvest registration autonomously:

1. Check whether a valid Harvest credential already exists.
2. If not, check for the mailbox connection I explicitly authorized above.
3. If exactly one mailbox is connected, determine its email address from account metadata. Do not ask me for it and do not scan unrelated emails to guess it.
4. Send the Harvest verification code to that address.
5. Search only for the newest matching "Your Harvest access code" email, retrieve its six-digit code, and do not open unrelated messages.
6. Verify the code and let the registration helper save the API key in the standard local Harvest config.
7. Tell me the config path and non-secret key fingerprint so I retain control of the account. Never print, repeat, log, expose, or commit the full verification code or API key.
8. Do not require an API-key dashboard for initial setup.
9. Ask me for an email or verification code only if mailbox access is unavailable or ambiguous.
10. Run the Harvest MCP probe and continue only after receiving `mcp_probe_pass`.

After registration succeeds, ask me for an authorized Google Meet URL, join it through Harvest, report the real join status, and remain active in the meeting according to SKILL.md.

Autonomous registration

With an authorized email MCP, the agent uses the explicit authorization in the prompt, determines the connected mailbox address, and completes the one-time verification without requesting redundant input. It asks for an email or code only when mailbox access is unavailable or ambiguous.

Primary path: clone and run the installer

git clone https://github.com/AgentRadarLabs/harvest-hosted

Read the root SKILL.md completely, then run the installer for your runtime:

node scripts/install.mjs --runtime codex
node scripts/install.mjs --runtime claude-code

Follow the public README for runtime-specific setup and read SKILL.md completely. The agent completes registration according to the skill, runs the MCP probe, and continues only aftermcp_probe_pass.

Join a meeting

Inside your running Claude, run:

/harvest https://meet.google.com/xxx-xxxx-xxx

Harvest joins the call as a visible participant. From there your agent hears the room and speaks with the speak tool. Talk over it to interrupt.

Posting to the meeting chat

Beyond speaking, your agent can send a Meet chat message with the send_chat_message tool, for example to drop a summary or a link during the call. It works only while Harvest is in an active call. Harvest posts the message to the chat, it does not guarantee that anyone reads it.

Seeing who is in the call and what is on screen

Your agent can also read the room. Call get_meeting_participants to see who is currently in the meeting, and take_screenshot to capture what is on the shared screen right now. Both work only while Harvest is in an active call.

Real speaker names in the transcript are an opt-in preview and are off by default. Until then, speakers are labelled Speaker 1, Speaker 2, and so on. coming soon

Getting into a closed meeting

If the meeting is locked or has a waiting room, Harvest does not force its way in. It knocks and waits for a host to admit it. The join runs as a background operation your agent can poll for a status: it moves from waiting for admission to admitted and active, or ends as declined, blocked by the meeting settings, or timed out. See the FAQ for what each status means.

Identity and voice

Configure the name, optional three-word description, approved avatar, color, persona, bilingual voice, and intonation when you create or edit an agent in the dashboard. Leave the description empty to keep the name centered in the meeting.

An authenticated agent can override the same fields for one call by passing an identity object to join_meeting. Voice presets are provider-agnostic and curated to speak both Russian and English.

{"url":"https://meet.google.com/abc-defg-hij","session_id":"primary","identity":{"name":"Wally","description":"Research meeting agent","color":"#f97316","persona":"Answer briefly.","voice":"puck","avatar":"cogwick"}}

Coming soon

Harvest joins Google Meet today. Zoom and Teams support, and calendar auto-join with webhook notifications, are coming soon. We do not promise a date until each one is live.

Manual configuration (reference)

The installer does all of this for you. If you configure by hand, these are the exact values.

Gateway URL:

https://tryharvest.ai/mcp

MCP server config:

{"type":"http","url":"https://tryharvest.ai/mcp","headers":{"Authorization":"Bearer ${HARVEST_TOKEN}"}}

Permission, in ~/.claude/settings.json:

{"permissions":{"allow":["mcp__harvest-hosted__*"]}}
Without this permission the agent wakes and receives the transcript but cannot call Harvest tools. It stays silent when it tries to speak.

Manage agents in your dashboard

You create and manage agents in your dashboard. It hands you a connection token and a ready to paste setup, so you do not hand write the MCP config below.

  • Your agents live under your Harvest login. You do not manage account ids by hand.
  • Set the in-call name, optional three-word description, approved avatar, color, persona, bilingual voice, and intonation. Each agent gets its own connection token, shown once. Save it right away. It cannot be recovered after you close it.
  • You can issue more than one token for an agent. Issuing another token does not revoke the existing ones, so revoke each token you no longer use.
  • Each agent shows its own usage: meeting minutes, speaking share, interruptions, response latency, and disconnects. A period that is still being counted is marked incomplete until it settles.
  • Usage by API key: each of an agent’s keys shows its own fingerprint and meeting minutes, so you can see which key did what.
  • When the billing preview is on, each key and the agent also show an estimated charge. It is a preview estimate only, not a committed or public price, and nothing is ever charged (no live charges). With the preview off, no estimate is shown. coming soon
  • Your estimate is kept separate from what your agents cost us to run: we never present that internal running cost as your price. The displayed estimate comes from your account’s current pricing preview, and it is not a charge or a public pricing offer until it is enabled for your account. coming soon

Stuck? See the FAQ or reach out.