diff --git a/.cursor-plugin/marketplace.json b/.cursor-plugin/marketplace.json index a548a5882..87b69f1e2 100644 --- a/.cursor-plugin/marketplace.json +++ b/.cursor-plugin/marketplace.json @@ -672,6 +672,11 @@ "grokbot": "0.49.0", "sand": "0.49.0" } + }, + { + "name": "languals", + "source": "third_party/languals", + "description": "Language tutor: estimate CEFR levels, correct sentences with explained mistakes, translate expressions, and practice with flashcards and pronunciation." } ] } diff --git a/README.md b/README.md index ab6550a25..85178d848 100644 --- a/README.md +++ b/README.md @@ -123,6 +123,7 @@ Official Cursor plugins for popular developer tools, frameworks, and SaaS produc | `servicenow` | [ServiceNow](third_party/servicenow/) | Cursor | Integrations | Call the tools your admin publishes on a ServiceNow instance. | | `rippling` | [Rippling](third_party/rippling/) | Cursor | Integrations | Look up people, time off, and company policy in Rippling, and file time-off requests and draft hires. | | `onepay` | [OnePay](third_party/onepay/) | Cursor | Integrations | Access your OnePay accounts: balances, transactions, credit, Pay Later, investments, crypto, and rewards. | +| `languals` | [Languals](third_party/languals/) | Languals | Integrations | Language tutor: estimate CEFR levels, correct sentences with explained mistakes, translate expressions, and practice with flashcards and pronunciation. | Author values match each plugin’s `plugin.json` `author.name` (Cursor lists `plugins@cursor.com` in the manifest). ## Repository structure diff --git a/third_party/languals/.cursor-plugin/plugin.json b/third_party/languals/.cursor-plugin/plugin.json new file mode 100644 index 000000000..fced19428 --- /dev/null +++ b/third_party/languals/.cursor-plugin/plugin.json @@ -0,0 +1,33 @@ +{ + "name": "languals", + "displayName": "Languals", + "version": "1.0.0", + "description": "Language tutor: estimate CEFR levels, correct sentences with explained mistakes, translate expressions, and practice with flashcards and pronunciation.", + "author": { + "name": "Languals", + "email": "contact@languals.fr" + }, + "homepage": "https://languals.fr", + "repository": "https://github.com/assoujojo82-coder/languals-mcp", + "license": "MIT", + "logo": "https://languals.fr/languals-logo.png", + "keywords": [ + "languals", + "language tutor", + "language learning", + "cefr", + "grammar correction", + "translation", + "flashcards", + "pronunciation", + "mcp" + ], + "category": "integrations", + "tags": [ + "languals", + "education", + "languages", + "mcp" + ], + "mcpServers": "./mcp.json" +} diff --git a/third_party/languals/LICENSE b/third_party/languals/LICENSE new file mode 100644 index 000000000..aa0ee696c --- /dev/null +++ b/third_party/languals/LICENSE @@ -0,0 +1,21 @@ +MIT License + +Copyright (c) 2026 Languals + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. diff --git a/third_party/languals/README.md b/third_party/languals/README.md new file mode 100644 index 000000000..08035f14b --- /dev/null +++ b/third_party/languals/README.md @@ -0,0 +1,54 @@ +# Languals + +Cursor plugin that connects agents to [Languals](https://languals.fr), a language tutor, through Languals' hosted [Model Context Protocol](https://modelcontextprotocol.io/) server. + +Estimate CEFR levels, correct sentences with explained mistakes, translate expressions, and practice with flashcards and pronunciation. + +## Install + +1. Open **Cursor Settings → Plugins**. +2. Search for **Languals**. +3. Click **Install**. + +Or run `/add-plugin languals` in chat. + +## MCP + +```json +{ + "mcpServers": { + "languals": { + "type": "http", + "url": "https://languals.fr/mcp" + } + } +} +``` + +Public tools need no account or API key. Account tools use OAuth 2.1 (PKCE, dynamic client registration): Cursor prompts for Languals sign-in when you first call one. Create an account at https://languals.fr/register or sign in with Google, then click **Autoriser**. + +## What agents can do + +| Access | Capabilities | +| --- | --- | +| No account | List the languages taught, estimate the CEFR level (A1–C2) of a text, correct sentences with each mistake explained in the learner's language, translate expressions with usage notes | +| Languals account | Practice conversations with the tutor, end-of-session notes, progress and due flashcards, flashcard reviews, natural-voice pronunciation | + +The hosted runtime is the source of truth for tool names and schemas. + +## Notes + +- Level estimates are indicative. +- Account tools run under the Languals account of the user who authorizes the connection. + +## Docs + +- Languals: https://languals.fr +- Server URL: https://languals.fr/mcp +- Source: https://github.com/assoujojo82-coder/languals-mcp + +The logo is referenced by its submitted URL (`https://languals.fr/languals-logo.png`). languals.fr blocked automated requests when this plugin was added, and no official Languals icon was found elsewhere, so no local image file is committed yet. + +## License + +MIT diff --git a/third_party/languals/mcp.json b/third_party/languals/mcp.json new file mode 100644 index 000000000..413d7bfc0 --- /dev/null +++ b/third_party/languals/mcp.json @@ -0,0 +1,8 @@ +{ + "mcpServers": { + "languals": { + "type": "http", + "url": "https://languals.fr/mcp" + } + } +}