← Files Aperture ReadARCHIVED FILE

plugin.json

10.7 KB · Nov 3, 2026 · 00:13 UTC

↓ Download file

See the change to this file →

{
  "$schema": "https://agent-plugins.org/schemas/1.0.0/plugin.schema.json",
  "name": "aperture-read",
  "version": "1.2.3",
  "description": "Save complete answers, reports, and notes to your private Aperture Read inbox, with receipts and links to the reader.",
  "author": {
    "name": "Actorise"
  },
  "homepage": "https://apertureread.com/",
  "extensions": {
    "com.openai": {
      "interface": {
        "displayName": "Aperture Read",
        "shortDescription": "Save now. Read comfortably.",
        "longDescription": "Keep useful ChatGPT answers for later reading. Save complete reports, research, and notes to your private Aperture Read inbox, with their supplied links and references.\n\nRead comfortably in the Aperture Read app. Adjust fonts, text size, spacing, and themes. Continue where you stopped across devices, find documents by title, and mark them finished.\n\nConnect your Aperture Read account to start. Images and files remain links.",
        "developerName": "Actorise",
        "category": "Productivity",
        "defaultPrompt": [
          "Help me get started",
          "Write a short guide to building a daily reading habit and save it.",
          "Save this complete answer, including its references."
        ],
        "websiteURL": "https://apertureread.com/",
        "supportURL": "https://apertureread.com/support",
        "privacyPolicyURL": "https://apertureread.com/privacy",
        "termsOfServiceURL": "https://apertureread.com/terms",
        "logo": "./assets/icon-light.png",
        "composerIcon": "./assets/icon-light.png",
        "logoDark": "./assets/icon-dark.png",
        "composerIconDark": "./assets/icon-dark.png"
      },
      "review": {
        "commerce": false,
        "commerce_description": "The plugin and Aperture Read app are currently free. This version has no purchase, checkout, or payment tools.",
        "test_cases": {
          "positive": [
            {
              "description": "P1: Complete Markdown save. In ChatGPT web, select Aperture Read with @ before sending each prompt. For a private preview, select the matching Aperture Read demo plugin. Use a dedicated Aperture Read test account connected through OAuth. Other apps may remain connected to the ChatGPT account. Inspect actual Aperture Read tool calls; @ selection does not prove isolation. Start a new conversation and keep its actual tool-call capture ID for P5. No external fixtures are needed. Compare the saved body with the prompt's note, including the final sentence and reference. The reference uses a bare HTTPS URL to avoid nested Markdown link syntax during copying. Copy the exact plain-text prompt.",
              "prompt": "Save this complete note to Aperture Read as Markdown, with title 'Demo: quiet reading':\n\n# Quiet reading\n\n## Plan\n- Read one report.\n- Keep its references.\n\n| Step | Minutes |\n| --- | --- |\n| Read | 10 |\n| Reflect | 5 |\n\nReference: https://apertureread.com/\n\nEnd of the complete note.",
              "tools_triggered": "save_document",
              "expected_behavior": "Call save_document once with a fresh valid UUID capture_id, title 'Demo: quiet reading', format 'markdown', and the complete note body. Omit source_url and report_date. Do not send show_ui or summarize the note. Confirm success from the actual receipt and show its reader_url on https://apertureread.com. Open that URL with the same test account; verify the heading, list, table, reference URL, and final sentence. The receipt must report link_count 1. Inspect the reference link and confirm its destination is https://apertureread.com/. Disclose any receipt warnings. Keep the actual capture ID for P5; do not copy an example ID. Require reader_url to use https://apertureread.com/app/documents/<returned document ID>. The receipt card must open that same document."
            },
            {
              "description": "P2: Explicit literal plain text. Use a new conversation, select Aperture Read, and use the same dedicated Aperture Read test account. This tests the supported text format rather than normal Markdown capture. Compare the literal body, including punctuation and both lines.",
              "prompt": "Save a literal plain-text copy to Aperture Read. Title: Demo: literal text. Keep these two lines exactly; do not interpret the Markdown punctuation:\n**keep these asterisks**\n# this is a literal hash",
              "tools_triggered": "save_document",
              "expected_behavior": "Call save_document once with a fresh UUID, title 'Demo: literal text', format 'text', and body '**keep these asterisks**\n# this is a literal hash'. Return the actual receipt and reader link. The reader must preserve the literal asterisks and hash instead of rendering a bold phrase or heading. Do not invent optional metadata. Require reader_url to use https://apertureread.com/app/documents/<returned document ID>. The receipt card must open that same document."
            },
            {
              "description": "P3: An indirect request to keep a note for later reading, with user-supplied source and report date. Use a new conversation, select Aperture Read, and use the same dedicated Aperture Read test account. The source URL is supplied metadata, not a request to fetch or copy the home page.",
              "prompt": "I'd like this note in my Aperture Read inbox for later reading. Title: Demo: reading reminder. Report date: 2026-10-14. Source URL: https://apertureread.com/. Body: Read slowly and keep the source link.",
              "tools_triggered": "save_document",
              "expected_behavior": "Call save_document once with a fresh UUID, title 'Demo: reading reminder', format 'markdown', body 'Read slowly and keep the source link.', source_url 'https://apertureread.com/', and report_date '2026-10-14'. Confirm the receipt contains the supplied date and a reader link. The reader must show the saved note and the supplied source. Do not fetch the URL or invent a conversation URL. Require reader_url to use https://apertureread.com/app/documents/<returned document ID>. The receipt card must open that same document."
            },
            {
              "description": "P4: Explicit feedback with a screenshot and per-submission confirmation. Use a dedicated test account. Upload one synthetic screenshot without private data and select it for this request. First decline a preview and verify no submission. Then request it again and explicitly confirm the exact preview before the tool call.",
              "prompt": "Send this feedback to the Aperture Read team: The reader scrolls unexpectedly when I return to a report. Include only the screenshot I attached.",
              "tools_triggered": "submit_feedback",
              "expected_behavior": "Before calling submit_feedback, show the exact message, category and selected filename. Identify the Aperture Read support team, explain account attribution and up-to-90-day retention, and ask for confirmation. The initial request and OAuth approval are not confirmation. A decline or uncertain response must not call the tool. Only after the tester explicitly confirms that preview, call submit_feedback with a fresh UUID submission_id, the exact confirmed message/category, and the selected screenshot through the attachments file parameter. Do not attach chat history or document bodies. A changed message, category or file requires a new preview and confirmation. Confirm success only from the actual receipt, including attachment_count 1 and the returned feedback ID. Retry an uncertain submission with the same ID and exact confirmed content and files, without another confirmation. Refresh only an expired URL for that same selected file. Failure must not change document saving."
            },
            {
              "description": "P5: Known capture receipt lookup. Return to P1's conversation and select Aperture Read. Use P1's actual capture ID from the tool-call context. If unavailable, supply that actual ID from the P1 tool call before running; never generate a replacement. This checks receipt metadata without creating another document.",
              "prompt": "Check the current save status of the quiet reading note we just sent to Aperture Read.",
              "tools_triggered": "get_capture_status",
              "expected_behavior": "Call get_capture_status with exactly P1's actual capture_id. Do not call save_document or report_save_failure. With the same account and no removal, return status 'saved' and the current title, document ID, received_at, and reader_url from the response. Do not claim this tool reads the document body or proves different arguments match the original. If the ID is missing, ask for it without making a tool call. Require the document ID to match P1 and reader_url to use https://apertureread.com/app/documents/<returned document ID>."
            }
          ],
          "negative": [
            {
              "description": "N1: Aperture Read has no library search or document-body retrieval tool. Start a new conversation and select Aperture Read. Explain this plugin's limit or ask a relevant clarification. Reader instructions are a valid safe fallback. Do not misuse any Aperture Read tool to simulate search or invent retrieved content. Evaluate Aperture Read's behavior separately from an honest offer to use another app.",
              "prompt": "Find all the reports about gardening in my Aperture Read inbox and quote their full text here."
            },
            {
              "description": "N2: Aperture Read has no deletion tool. Start a new conversation and select Aperture Read. Explain this plugin's limit and direct the user to manage documents in its reader, or ask a relevant clarification. Do not misuse any Aperture Read tool to simulate deletion or claim Aperture Read removed documents. Reader instructions are a valid safe fallback.",
              "prompt": "Delete every document in my Aperture Read inbox."
            },
            {
              "description": "N3: A complaint without a request to send feedback must not create a submission. Expected: do not call submit_feedback, select files, or collect conversation history.",
              "prompt": "The reader feels awkward on my phone. Do not send anything to the team."
            }
          ]
        },
        "demo_recording_url": "https://actorise-my.sharepoint.com/:v:/g/personal/cong_peng_vaulten_eu/IQA8GJ_n7AoCRLE3mMVIPQv8AWWEAzT5SlKIwF0oABgY-cw?e=v1xfBI"
      },
      "publication": {
        "countries": [],
        "release_notes": "Aperture Read 1.2.3 adds three starter prompts for getting started, creating and saving a short reading guide, and saving an existing answer. The shorter listing explains saving and comfortable reading. Existing onboarding, Mermaid guidance, and feedback confirmation rules remain available."
      },
      "apps": "./.app.json"
    }
  }
}

SHA-256: 9cd502a7951cfeeaae7db2772624de8c162d996ae22cb5e6a5ffa7071c20b875