Search what Earshot archived
Full-text search over current archived message content, optionally scoped to one channel.
/v1/servers/:id/search?q=refund+policyEarly access for queryable archives and APIs over the Discord Servers in your plan.
observable historylive syncvisible coverageREST + MCP$ curl "https://api.earshot.gg/v1/servers/120381920000000000/search?q=refund" \ -H "Authorization: Bearer esk_demo_earshot"
{ "data": [{ "message_id": "120381920000000011", "channel_id": "120381920000000001", "content": "refunds: /billing refund, up to 14 days", "discord_created_at": "2024-03-11T02:14:09Z", "discord_edited_at": null }], "page": { "next_cursor": null }, "coverage": { "channels_total": 12, "channels_covered": 10, "status": "partial" }, "as_of": { "archive_incarnation_id": "1d807584-4fd1-4ac9-99df-92c44e168f6f", "archive_revision": "48192" } }
Earshot maintains a query-ready archive of what the authorized Bot Connection can observe, with keyset pagination and Coverage that states what may be missing.
?channel_id=120381920000000001?created_after=2026-05-01T00:00:00Z?cursor=eyJ2IjoxLCJ.../v1/servers/:id/search?q=deploy+failed/v1/servers/:id/messages/:message_id/v1/servers/:id/coveragePoint Claude, Cursor, or any MCP client at one URL with your API credential. No package, nothing to run.
One entry in your MCP config:
"earshot": { "url": "https://api.earshot.gg/mcp", "headers": { "Authorization": "Bearer esk_..." } }Read-only tools over the authorized archive:
search_messagesget_messageslist_channelsFull-text search over current archived message content, optionally scoped to one channel.
/v1/servers/:id/search?q=refund+policyRead one message's current archived state by its Discord message ID.
GET /v1/servers/:id/messages/:message_idMock requests and responses show the planned demo experience. They do not call a live demo service yet. Pick an example:
$ curl "https://api.earshot.gg/v1/servers/120381920000000000/search?q=rate+limit" \ -H "Authorization: Bearer esk_demo_earshot"
{ "data": [{ "message_id": "120381920000000012", "channel_id": "120381920000000001", "content": "hit the rate limit? batch reads and follow the cursor", "discord_created_at": "2025-11-02T19:22:41Z", "discord_edited_at": null }], "page": { "next_cursor": null }, "coverage": { "channels_total": 12, "channels_covered": 10, "status": "partial" }, "as_of": { "archive_incarnation_id": "1d807584-4fd1-4ac9-99df-92c44e168f6f", "archive_revision": "48192" } }
$ curl "https://api.earshot.gg/v1/servers/120381920000000000/messages?channel_id=120381920000000001&limit=1" \ -H "Authorization: Bearer esk_demo_earshot"
{ "data": [{ "message_id": "120381920000000013", "channel_id": "120381920000000001", "content": "v2 launch is live", "discord_created_at": "2026-06-30T16:05:12Z", "discord_edited_at": null }], "page": { "next_cursor": "eyJ2IjoxLCJlbmRwb2ludCI6Im1lc3NhZ2VzIn0.signature" }, "coverage": { "channels_total": 12, "channels_covered": 10, "status": "partial" }, "as_of": { "archive_incarnation_id": "1d807584-4fd1-4ac9-99df-92c44e168f6f", "archive_revision": "48192" } }
$ curl "https://api.earshot.gg/v1/servers/120381920000000000/coverage" \ -H "Authorization: Bearer esk_demo_earshot"
{ "data": [{ "channel_id": "120381920000000001", "connection_id": "7ecae19d-ae52-4827-9daa-42a155888a39", "summary": { "status": "partial", "work_state": "running", "surfaces": ["messages"], "has_known_gaps": true } }], "page": { "next_cursor": null }, "coverage": { "channels_total": 12, "channels_covered": 10, "status": "partial" }, "as_of": { "archive_incarnation_id": "1d807584-4fd1-4ac9-99df-92c44e168f6f", "archive_revision": "48192" } }
{ "mcpServers": { "earshot": { "url": "https://api.earshot.gg/mcp", "headers": { "Authorization": "Bearer esk_demo_earshot" } } } }
Paste into Claude or Cursor and query the server from your agent.
One request returns the archived channels visible to your credential.
$ curl "https://api.earshot.gg/v1/servers/120381920000000000/channels" \ -H "Authorization: Bearer esk_demo_earshot"
Choose an eligible Public Server Archive within your plan's Server Allowance.
Live intake starts first; Historical Sync imports the history Discord still exposes.
Query committed data immediately while Historical Sync continues, with visible Coverage.
Discord authorizes the bot; Earshot controls the Connection-wide Sync Scope. The bot does not post to the Server.
Historical Coverage, Live Continuity, and known Gaps stay visible while the archive is queryable.
Content deleted before observation or hidden by permissions cannot be recovered.
Candidate plans while Earshot completes platform and legal review. A request is one API call; an MCP tool call counts the same. A shared read-only demo is planned.
For small communities.
For agencies and multi-server teams.
For orgs with compliance needs.
| Limits | Starter | Pro | Enterprise |
|---|---|---|---|
| Servers | 3 | 25 | 25+ |
| Message history | Observable | Observable | Observable |
| API requests | 100k/mo | 1M/mo | Custom |
| Rate limit | 10 req/s per credential | 50 req/s per credential | Custom |
| Full-text search | Included | Included | Included |
| Hosted MCP | Included | Included | Included |
| Message lookup | Included | Included | Included |
| Channel listing | Included | Included | Included |
Past 100% of your request cap we keep serving to 120% — with an email at 80% and 100% — then return 429 until the month resets or you upgrade. No overage billing.
Choose a server and query its observable history, live updates, and Coverage. One API.