# Move from Plain to Rinhelp

Plain threads, customers and help center articles can be read through Plain’s official MCP server or its GraphQL API. Messages live in each customer’s timeline rather than in the thread, so the full history is read customer by customer.

| Conversations | Time to read them |
| --- | --- |
| 1,000 | no per-minute limit to time it by |
| 10,000 | no per-minute limit to time it by |

Limit used: no per-minute number (no number in Plain’s developer docs), about 2 per conversation. Rinhelp takes up to 3,000 conversations a minute. Importing is free: it never emails your customers, never runs Rin and never counts toward a plan.

Make a Plain API key with thread read permission for a coding agent, or sign in to Plain’s MCP server with your own account for a chat app. Snippets have no documented API, so you paste the ones you use.

## Prompt for a chat app

Connect Plain’s MCP server at https://mcp.plain.com/mcp next to Rinhelp, then follow https://rinhelp.com/migrate/plain.md to copy my Plain help center articles into Rinhelp. I’ll paste my snippets for you to save as saved replies, since Plain’s MCP has no snippet tools.

## Prompt for a coding agent

Follow https://rinhelp.com/migrate/plain.md to move every Plain thread into Rinhelp. Call Plain’s GraphQL API with the API key I give you as a bearer token, list the threads, then read each customer’s timeline entries oldest first and match them back to their threads.

## Words

| Their word | Rinhelp |
| --- | --- |
| Thread | Conversation |
| Timeline entry | Message |
| Customer | Customer |
| Snippet | Saved reply |
| Help center article | Article |
| Label | Tag |

## What stays behind

- Workflows and automations
- Slack and channel connections
- Reports
- Customer cards

## Facts

- Plain’s API is GraphQL at one address, and an API key goes in the Authorization header as a bearer token. Vendor page: https://www.plain.com/docs/graphql/introduction.md (checked 2026-10-31)
- Each Plain API key has only the permissions you give it, and listing threads needs thread read permission. Vendor page: https://www.plain.com/docs/graphql/threads/get.md (checked 2026-10-31)
- Plain lists threads page by page, with filters on status, assignee, customer, labels and priority. Vendor page: https://www.plain.com/docs/graphql/threads/get.md (checked 2026-10-31)
- Plain keeps messages in a timeline read per customer, oldest first, in cursor pages, so entries have to be matched back to their threads. Vendor page: https://www.plain.com/docs/graphql-reference/queries/timelineEntries.md (checked 2026-10-31)
- Plain’s official MCP server signs in with your own Plain account, needs no API key, and can do only what your role allows. Vendor page: https://www.plain.com/docs/integrations/mcp-server.md (checked 2026-10-31)
- Plain’s MCP server lists threads with filters, customers, and help centers with their articles, but documents no snippet tools. Vendor page: https://www.plain.com/docs/integrations/mcp-server.md (checked 2026-10-31)
- Plain’s API lists help centers and fetches an article by its ID or slug. Vendor page: https://www.plain.com/docs/graphql/help-center/get.md (checked 2026-10-31)
- Plain’s snippets pages describe them only inside the app, with no query for listing them. Vendor page: https://www.plain.com/docs/product/platform/snippets.md (checked 2026-10-31)
- Plain’s attachments page covers only uploading, with upload links that last 2 hours, and doesn’t say how to download an existing file. Vendor page: https://www.plain.com/docs/graphql/attachments.md (checked 2026-10-31)
- Plain’s blog says its API has no rate limits; its developer docs give no number either way. Vendor page: https://www.plain.com/blog/api-first-support-ai-agents (checked 2026-10-31)

## Steps

Import source: `plain`

Connect Rinhelp's MCP server, https://mcp.rinhelp.com/mcp, then follow https://mcp.rinhelp.com/migrate.md step by step with the facts above.

1. [Connect your AI agent](https://docs.rinhelp.com/articles/98a0def1-a07d-4c34-9f19-4d168626b40c-connect-your-ai-agent)
2. [Move to Rinhelp with your AI agent](https://docs.rinhelp.com/articles/5a2a3f45-4e61-4daf-8d23-570a8bfc24a1-move-to-rinhelp-with-your-ai-agent)
3. [Import your help center articles](https://docs.rinhelp.com/articles/a79b3172-a803-44a2-9236-0ab73d56b051-import-your-help-center-articles)
4. [Keep your old help center links working](https://docs.rinhelp.com/articles/ba9cf0f3-9740-4c90-9ca5-7a9a0ef0b450-keep-your-old-help-center-links-working)
5. [Import saved replies](https://docs.rinhelp.com/articles/5d8f8400-2a36-4974-a646-c9f04a41361d-import-saved-replies)
6. [Import past conversations](https://docs.rinhelp.com/articles/7e85f2b0-336d-4774-850a-826951d9585c-import-past-conversations)
7. [Switch your support email to Rinhelp](https://docs.rinhelp.com/articles/44c7935d-ccee-409b-83ac-fa4e5f762eb0-switch-your-support-email-to-rinhelp)
8. [Replace your chat widget](https://docs.rinhelp.com/articles/031f9d71-579b-4229-8f50-3eee8e31c277-replace-your-chat-widget)

## Questions

### Can I do the whole Plain move from a chat app?

Help center articles, yes, through Plain’s MCP server. Full thread history comes from each customer’s timeline in the GraphQL API, which is a job for a coding agent.

### What permissions does my Plain API key need?

Thread read permission at least, because a Plain key can only do what you grant it and listing threads needs that one. You choose the permissions when you make the key.

### Does Plain have a rate limit?

Plain’s blog says it has none, and its developer docs give no number. On Rinhelp’s side, imports take 50 conversations per call and 60 calls a minute.

By Wilbert Liu, founder of Rinhelp. Page: https://rinhelp.com/migrate/plain
