AI Connector

Use Parrot in ChatGPT and Muse

Bring your Parrot Spanish level, streak, and vocabulary into your AI assistant, and save words you learn back to Parrot.

Last updated: September 29, 2026.

How it works

  1. In ChatGPT or Muse, add the Parrot connector.
  2. Sign in to your Parrot account and review what the app can access.
  3. Tap Allow. The assistant can now tailor Spanish practice to your level and your words.

What the assistant can and cannot do

The assistant canThe assistant cannot
See your Parrot level and matching CEFR level (for example “Lower B1”)Change your level or set your streak directly
See your day streak and how many words you know and are learningSee your email, payment details, or subscription
List the words you are learning and the words you knowSee your lessons, cards, recordings, or messages
Save words to your Parrot dictionary as learning or known (up to 50 at a time, only when you ask)Delete your account or your data
Count today toward your streak after a real practice session

Parrot stays the source of truth. The connector never gives the AI app your Parrot password.

Example prompts

  • “What's my Spanish level in Parrot?”
  • “Quiz me on the words I'm learning in Parrot.”
  • “Teach me five travel words at my level and save them to Parrot.”
  • “Save mariposa (butterfly) as a word I'm learning.”
  • “I practiced Spanish today, count it toward my streak.”

Privacy

Parrot shares only the data listed above, and only after you approve the connection. Access ends as soon as you disconnect. See the Connected AI Apps section of our privacy policy.

Support

Questions or problems? Email support@parrotapp.com.


Technical reference

For developers and reviewers

Server

MCP server URL:

https://prod.parrotapp.com/mcp
  • Transport: Streamable HTTP, stateless JSON-RPC over POST /mcp. There are no sessions or server-sent event streams (GET and DELETE /mcp return 405).
  • Supported MCP protocol versions: 2025-11-25, 2025-06-18, 2025-03-26, 2024-11-05.
  • Methods: initialize, ping, tools/list, tools/call.

Authentication

  • OAuth 2.1 authorization code flow with PKCE (S256 only). The learner signs in to Parrot and approves on a Parrot consent page.
  • Scopes: learner:read (level, streak, word lists) and learner:write (save words, record practice).
  • Discovery: an unauthenticated request to /mcp returns 401 with a WWW-Authenticate header pointing to the protected resource metadata.
  • Client registration: supports Client ID Metadata Documents (the client_id is an HTTPS URL to the client's metadata) and Dynamic Client Registration (RFC 7591). All clients are public PKCE clients; redirect URIs must be HTTPS on a trusted AI app's domain, or loopback for local development tools.
  • Access tokens last 1 hour. Refresh tokens last 90 days and rotate on every use. Authorization responses include iss (RFC 9207).
  • Revoking a token through the revoke endpoint makes the next call return 401.
EndpointURL
Protected resource metadata (RFC 9728)https://prod.parrotapp.com/.well-known/oauth-protected-resource/mcp
Authorization server metadata (RFC 8414)https://prod.parrotapp.com/.well-known/oauth-authorization-server
Dynamic Client Registration (RFC 7591)https://prod.parrotapp.com/oauth/register
Authorizehttps://prod.parrotapp.com/oauth/authorize
Tokenhttps://prod.parrotapp.com/oauth/token
Revoke (RFC 7009)https://prod.parrotapp.com/oauth/revoke

Tools

ToolAccessWhat it does
get_learner_contextread-onlyReturns the learner's Parrot level, CEFR level, day streak, and counts of known and learning words. Call this first.
list_learning_wordsread-onlyLists words the learner is learning, newest first, with pagination.
list_known_wordsread-onlyLists words the learner knows, newest first, with pagination.
set_word_statuswriteSaves 1 to 50 Spanish words as learning or known. New words need their English meaning.
record_practice_todaywriteCounts today toward the learner's day streak. Returns whether today was newly counted.
  • Every tool declares an input and output schema. Results include structuredContent.
  • No tool is destructive. Read-only tools are annotated readOnlyHint: true.
  • Tools that need learner:write return an error asking the user to reconnect with more access if the token only has learner:read.

Example tool result: get_learner_context

{
  "language": "es",
  "level": { "parrotLevel": 12, "cefr": "Lower B1" },
  "streak": { "dayStreak": 5 },
  "counts": { "knownWords": 830, "learningWords": 41 }
}

cefr is null if the learner hasn't taken the placement test.

Example tool input: set_word_status

{ "words": [{ "targetWord": "mariposa", "nativeWord": "butterfly", "status": "learning" }] }

Limits: targetWord up to 80 characters, nativeWord up to 200. Existing words keep their stored meaning and only change status.

Example tool result: list_learning_words

{
  "words": [{ "wordKey": "mariposa", "targetWord": "mariposa", "nativeWord": "butterfly", "status": "learning" }],
  "nextCursor": null,
  "totalCount": 41
}

Page size defaults to 100 (maximum 500). Pass nextCursor back as cursor for the next page; it is null on the last page.

HTTP API (same data, same JSON)

The same contract is available over REST with the same OAuth tokens, base URL https://prod.parrotapp.com:

EndpointAccess
GET /v1/learnerread
GET /v1/learner/words?status=learning|known&limit=&cursor=read
PUT /v1/learner/wordswrite
POST /v1/learner/practicewrite

Errors use this shape:

{ "error": { "code": "...", "message": "..." } }
CodeHTTP status
invalid_request400
native_word_required400
invalid_token401
insufficient_scope403
dictionary_full409
rate_limited429, with Retry-After

Rate limits

120 requests per minute per connection (burst 30).