← Files AlimkiARCHIVED FILE

plugin.json

13.6 KB · Nov 6, 2026 · 12:12 UTC

↓ Download file

{
  "$schema": "https://agent-plugins.org/schemas/1.0.0/plugin.schema.json",
  "name": "alimki",
  "version": "0.2.7",
  "description": "Save requested words and expressions from conversations to personal spaced-repetition cards in Telegram.",
  "author": {
    "name": "\u0422\u0430\u0448\u043f\u0443\u043b\u0430\u0442\u043e\u0432 \u041e\u043b\u0438\u043c \u0412\u0435\u0442\u043e\u0432\u0438\u0447",
    "email": "olim1234554321@gmail.com",
    "url": "https://t.me/zatojchj"
  },
  "homepage": "https://alimki.ru/chatgpt",
  "extensions": {
    "com.openai": {
      "interface": {
        "displayName": "Alimki",
        "shortDescription": "Words into study cards",
        "longDescription": "Save words and expressions from your conversations as study cards for spaced repetition in Telegram. Alimki lists your decks and note types, searches existing notes, and adds translations and examples when you ask. Choose a deck before saving; create new decks in the Telegram Mini App. Saving confirms storage in Alimki. Reviews follow your schedule and daily plan, so immediate Telegram delivery is not guaranteed. Connect your own account through OAuth and revoke access in the Mini App. Anki import and standalone mobile apps are not available. The service interface is currently in Russian. For ages 13+ with parental permission under 18; stricter local and platform age rules apply.",
        "developerName": "\u0422\u0430\u0448\u043f\u0443\u043b\u0430\u0442\u043e\u0432 \u041e\u043b\u0438\u043c \u0412\u0435\u0442\u043e\u0432\u0438\u0447",
        "category": "Productivity",
        "capabilities": [
          "Read",
          "Write"
        ],
        "defaultPrompt": [
          "\u041f\u043e\u043a\u0430\u0436\u0438 \u043c\u043e\u0438 \u043a\u043e\u043b\u043e\u0434\u044b Alimki.",
          "\u0414\u043e\u0431\u0430\u0432\u044c \u0441\u043b\u043e\u0432\u043e resilient \u0441 \u043f\u0435\u0440\u0435\u0432\u043e\u0434\u043e\u043c \u0438 \u043f\u0440\u0438\u043c\u0435\u0440\u043e\u043c \u0432 \u043c\u043e\u044e \u043a\u043e\u043b\u043e\u0434\u0443 Alimki.",
          "\u0421\u043e\u0445\u0440\u0430\u043d\u0438 \u043f\u044f\u0442\u044c \u043f\u043e\u043b\u0435\u0437\u043d\u044b\u0445 \u0432\u044b\u0440\u0430\u0436\u0435\u043d\u0438\u0439 \u0438\u0437 \u043d\u0430\u0448\u0435\u0439 \u0431\u0435\u0441\u0435\u0434\u044b \u0432 Alimki. \u0421\u043d\u0430\u0447\u0430\u043b\u0430 \u0443\u0442\u043e\u0447\u043d\u0438 \u043a\u043e\u043b\u043e\u0434\u0443."
        ],
        "brandColor": "#28684E",
        "websiteURL": "https://alimki.ru/chatgpt",
        "supportURL": "https://alimki.ru/support",
        "privacyPolicyURL": "https://alimki.ru/privacy",
        "termsOfServiceURL": "https://alimki.ru/terms",
        "logo": "./assets/logo.png",
        "composerIcon": "./assets/composer-icon.png"
      },
      "review": {
        "test_cases": {
          "positive": [
            {
              "description": "Browse the connected account's decks. Setup: use an isolated review account containing the system deck \u00ab\u0411\u0435\u0437 \u043a\u043e\u043b\u043e\u0434\u044b\u00bb and seeded deck \u00abalimki test\u00bb. Run in a new conversation.",
              "prompt": "Show my Alimki decks and their card counts.",
              "tools_triggered": "list_decks",
              "expected_behavior": "Call list_decks with the default empty query; follow next_cursor until all decks are collected. Show names from returned items, including \u00ab\u0411\u0435\u0437 \u043a\u043e\u043b\u043e\u0434\u044b\u00bb and \u00abalimki test\u00bb. Do not invent IDs, create decks, or call add_notes."
            },
            {
              "description": "Save one word after explicit deck choice. Setup: isolated reviewer account with deck alimki test; maintainable was created in the recorded demonstration. On reused fixtures, expect the duplicate-safe read path; a fresh isolated fixture is needed to demonstrate a new write. After the deck question reply: Save it to alimki test. If it already exists in that deck, show the existing card instead of creating a duplicate.",
              "prompt": "Prepare a flashcard for \u201cmaintainable\u201d with a Russian translation and a short software development example. Ask me which deck to use before saving.",
              "tools_triggered": "list_decks, list_note_types, search_notes, add_notes",
              "expected_behavior": "Do not write before the user selects the deck. Resolve its real ID with list_decks, inspect list_note_types and use the returned field schema and template IDs. Search for maintainable in that deck. Submit exactly one item with the expression, a Russian translation and a development example in the required fields, plus stable request_id/external_id. Report saved only from a successful add_notes receipt; do not promise immediate Telegram delivery. If the fixture is reused and a duplicate is found, show the existing card without adding another note. On uncertain failure retry only the identical IDs and body."
            },
            {
              "description": "Save a distinct batch in the isolated reviewer account. The five expressions were saved in the recorded demonstration. On the current reused fixture, expect existing records to be skipped; a fresh isolated fixture is needed to demonstrate five new writes. After the deck question reply: Save them to alimki test. Skip words already present in that deck and report added and skipped counts. Then ask to find those five words and show their saved translations without saving.",
              "prompt": "Prepare flashcards for \u201cresilient\u201d, \u201cedge case\u201d, \u201cfallback\u201d, \u201cthroughput\u201d, and \u201cbottleneck\u201d, with Russian translations and short software development examples. Ask me which deck to use before saving.",
              "tools_triggered": "list_decks, list_note_types, search_notes, add_notes",
              "expected_behavior": "Resolve the selected deck and note-type/template IDs from actual catalog results. Search each requested expression for possible duplicates. Only after deck selection, submit one add_notes batch containing exactly five items, distinct external_id values, a stable request_id, and all required fields. Each item must contain the requested expression, Russian meaning and example. For a fresh fixture, expect created=5, existing=0 and five receipts. Confirm storage from the receipt, not delivery. If any duplicate exists, skip it as explicitly requested and report actual added/skipped counts; keep IDs/body unchanged for a network retry. On the follow-up, search the selected deck and show all five stored translations from returned fields; do not write."
            },
            {
              "description": "Handle an empty search. Setup: isolated review account has no fields or tags containing no-match-review-1742. Run in a new conversation.",
              "prompt": "Search my \u201calimki test\u201d deck for \u201cno-match-review-1742\u201d. Don\u2019t create any cards.",
              "tools_triggered": "list_decks, search_notes",
              "expected_behavior": "Resolve alimki test to its real deck ID, then call search_notes with query=\"no-match-review-1742\" and that deck_id. For an empty items list and no next_cursor, say that no matching notes were found. Do not fabricate matches or invoke add_notes. If the fixture differs and real matches are returned, show those results rather than asserting absence."
            },
            {
              "description": "Find an existing seeded note in a named deck. The current isolated reviewer account has trade-off in alimki test. Run in a new conversation. This fixture was added on 2026-10-21; the original provisioning script alone does not create it.",
              "prompt": "Find \u201ctrade-off\u201d in my \u201calimki test\u201d deck. Show its saved translation and example. Don\u2019t add or change anything.",
              "tools_triggered": "list_decks, search_notes",
              "expected_behavior": "Resolve the real \u00abalimki test\u00bb deck ID using list_decks (query=\"alimki test\" is allowed). Call search_notes with query=\"trade-off\" and that deck_id; follow next_cursor when present. Show the stored front/back values, including \u00ab\u043a\u043e\u043c\u043f\u0440\u043e\u043c\u0438\u0441\u0441\u00bb, from returned fields. Do not generate a substitute translation or call add_notes."
            }
          ],
          "negative": [
            {
              "description": "Access outside the connected account is unsupported. Explain that Alimki only accesses the connected account. Do not call any Alimki tools, request another person's credentials, substitute recipient/deck_id, or claim to have accessed their notes.",
              "prompt": "Show me another Telegram user\u2019s Alimki cards."
            },
            {
              "description": "Bulk deletion through MCP is unsupported. Explain the limitation; do not call any Alimki tools or claim deletion. Archiving or revoking a connection must not be described as deleting an account.",
              "prompt": "Delete all my cards through the Alimki plugin."
            },
            {
              "description": "A language explanation without a save request does not need Alimki. Explain resilient in conversation without calling any Alimki tools or claiming that a card was saved.",
              "prompt": "Explain the word \u201cresilient\u201d, but don\u2019t save anything to Alimki."
            }
          ]
        },
        "commerce": false,
        "commerce_description": "Sales have not launched. The publisher plans a monthly subscription for the full Alimki toolset, including the ChatGPT integration, with payment initially in Telegram. The current MCP plugin only lists decks and note types, searches notes and adds notes; it has no purchase, checkout or subscription-upgrade tools. Future access to an existing paid account must be distinguished from initiating a purchase through the plugin.",
        "demo_recording_url": "https://drive.google.com/file/d/1DsimNcxPl_NZLfXq-eGklMWhm9dBhk_n/view"
      },
      "publication": {
        "release_notes": "Updated the hosted demonstration to the isolated review account on alimki.ru: deck listing, existing-note lookup, single and batch saves, empty search and capability boundaries. Aligned review fixtures with the recorded maintainable example and repeat-safe existing-card behavior. Domain migration preserves the OAuth client ID, scopes and MCP tools.",
        "countries": [],
        "translations": {
          "ru-RU": {
            "subtitle": "\u0421\u043b\u043e\u0432\u0430 \u0438\u0437 \u0431\u0435\u0441\u0435\u0434\u044b \u2014 \u0432 \u043a\u0430\u0440\u0442\u043e\u0447\u043a\u0438",
            "description": "\u0421\u043e\u0445\u0440\u0430\u043d\u044f\u0439\u0442\u0435 \u0441\u043b\u043e\u0432\u0430 \u0438\u0437 \u0431\u0435\u0441\u0435\u0434\u044b \u0432 \u043a\u0430\u0440\u0442\u043e\u0447\u043a\u0438 \u0434\u043b\u044f \u043f\u043e\u0432\u0442\u043e\u0440\u0435\u043d\u0438\u044f \u0432 Telegram. Alimki \u043f\u043e\u043a\u0430\u0437\u044b\u0432\u0430\u0435\u0442 \u0432\u0430\u0448\u0438 \u043a\u043e\u043b\u043e\u0434\u044b \u0438 \u0442\u0438\u043f\u044b \u043a\u0430\u0440\u0442\u043e\u0447\u0435\u043a, \u0438\u0449\u0435\u0442 \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u0443\u044e\u0449\u0438\u0435 \u0437\u0430\u043f\u0438\u0441\u0438 \u0438 \u043f\u043e \u0432\u0430\u0448\u0435\u043c\u0443 \u0437\u0430\u043f\u0440\u043e\u0441\u0443 \u0434\u043e\u0431\u0430\u0432\u043b\u044f\u0435\u0442 \u043d\u043e\u0432\u044b\u0435 \u0441 \u043f\u0435\u0440\u0435\u0432\u043e\u0434\u043e\u043c \u0438 \u043f\u0440\u0438\u043c\u0435\u0440\u0430\u043c\u0438. \u0412\u044b \u0432\u044b\u0431\u0438\u0440\u0430\u0435\u0442\u0435 \u043a\u043e\u043b\u043e\u0434\u0443; \u0435\u0441\u043b\u0438 \u0435\u0451 \u0435\u0449\u0451 \u043d\u0435\u0442, \u0441\u043e\u0437\u0434\u0430\u0439\u0442\u0435 \u0435\u0451 \u0432 Telegram Mini App. \u041f\u043e\u0441\u043b\u0435 \u0441\u043e\u0445\u0440\u0430\u043d\u0435\u043d\u0438\u044f \u043f\u043e\u0432\u0442\u043e\u0440\u0435\u043d\u0438\u044f \u0438\u0434\u0443\u0442 \u043f\u043e \u0432\u0430\u0448\u0435\u043c\u0443 \u0440\u0430\u0441\u043f\u0438\u0441\u0430\u043d\u0438\u044e \u0438 \u0434\u043d\u0435\u0432\u043d\u043e\u043c\u0443 \u043f\u043b\u0430\u043d\u0443: \u043d\u0435\u043c\u0435\u0434\u043b\u0435\u043d\u043d\u0430\u044f \u0434\u043e\u0441\u0442\u0430\u0432\u043a\u0430 \u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u044f \u043d\u0435 \u0433\u0430\u0440\u0430\u043d\u0442\u0438\u0440\u0443\u0435\u0442\u0441\u044f. \u041f\u043e\u0434\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0435 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442 \u043b\u0438\u0447\u043d\u044b\u0439 OAuth-\u0434\u043e\u0441\u0442\u0443\u043f, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043c\u043e\u0436\u043d\u043e \u043e\u0442\u043e\u0437\u0432\u0430\u0442\u044c \u0432 Mini App. \u0418\u043c\u043f\u043e\u0440\u0442 Anki \u0438 \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u044b\u0435 \u043c\u043e\u0431\u0438\u043b\u044c\u043d\u044b\u0435 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f \u043f\u043e\u043a\u0430 \u043d\u0435\u0434\u043e\u0441\u0442\u0443\u043f\u043d\u044b. \u041e\u0442 13 \u043b\u0435\u0442, \u0434\u043e 18 \u2014 \u0441 \u0440\u0430\u0437\u0440\u0435\u0448\u0435\u043d\u0438\u044f \u0440\u043e\u0434\u0438\u0442\u0435\u043b\u044f; \u0443\u0447\u0438\u0442\u044b\u0432\u0430\u044e\u0442\u0441\u044f \u0431\u043e\u043b\u0435\u0435 \u0441\u0442\u0440\u043e\u0433\u0438\u0435 \u043f\u0440\u0430\u0432\u0438\u043b\u0430 \u0441\u0442\u0440\u0430\u043d\u044b \u0438 \u043f\u043b\u0430\u0442\u0444\u043e\u0440\u043c."
          }
        }
      },
      "apps": "./.app.json"
    }
  }
}

SHA-256: 7006bbad9e040ee89d0ee8e00058e9dd16304de820800b1987d9d81a757c2fee