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.
How it works
- Someone in the meeting speaks.
- Harvest transcribes the room live and sends the transcript to your agent.
- Your agent decides whether to respond.
- If it responds, it calls the
speaktool and Harvest turns the text into a voice in the call. - 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-hostedRead the root SKILL.md completely, then run the installer for your runtime:
node scripts/install.mjs --runtime codex
node scripts/install.mjs --runtime claude-codeFollow 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-xxxHarvest 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/mcpMCP server config:
{"type":"http","url":"https://tryharvest.ai/mcp","headers":{"Authorization":"Bearer ${HARVEST_TOKEN}"}}Permission, in ~/.claude/settings.json:
{"permissions":{"allow":["mcp__harvest-hosted__*"]}}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.