← Files RayonARCHIVED FILE
plugin.json
8.08 KB · Nov 11, 2026 · 13:31 UTC
{
"$schema": "https://agent-plugins.org/schemas/1.0.0/plugin.schema.json",
"name": "rayon",
"version": "0.1.1",
"description": "Find, inspect, edit and present Rayon CAD drawings through conversation.",
"author": {
"name": "RAYON",
"url": "https://www.rayon.design"
},
"homepage": "https://www.rayon.design",
"keywords": [
"cad",
"architecture",
"interior-design",
"landscape",
"drawings"
],
"extensions": {
"com.openai": {
"interface": {
"displayName": "Rayon",
"shortDescription": "Design interiors & floor plans",
"longDescription": "Develop interior and architectural designs directly in chat. Refine floor plans, try different furniture layouts, visualize design ideas, and prepare schedules and client presentations using your connected Rayon projects.",
"developerName": "RAYON",
"category": "Creativity",
"capabilities": [
"Inspect drawings",
"Edit designs",
"Create schedules",
"Create presentations",
"Auto-dimension"
],
"websiteURL": "https://www.rayon.design",
"supportURL": "https://docs.rayon.design/other-resources/others/support-policy",
"privacyPolicyURL": "https://www.rayon.design/privacy",
"termsOfServiceURL": "https://www.rayon.design/terms-of-service",
"defaultPrompt": [
"List models I worked on last month",
"Create a furniture schedule for the 2nd floor",
"Create a presentation for my client to showcase the new interior design"
],
"logo": "./assets/logo.png",
"composerIcon": "./assets/logo.png"
},
"review": {
"test_cases": {
"positive": [
{
"description": "The dedicated reviewer account must have a directly shared test model named Onboarding, containing a populated plan with sofas. Grant edit access and any library entitlements needed by the demo. The fixture name is deliberate reviewer setup; do not embed its model ID.",
"prompt": "Show models available to me, including those shared with me.",
"tools_triggered": "listWorkspaces, listModels",
"expected_behavior": "Discovers accessible workspaces with listWorkspaces and lists models in the personal scope, the directly shared scope using workspace_id=\"shared\", and returned workspace IDs as applicable. Sorts by updatedAt descending and deduplicates any repeated model IDs. Includes directly shared results rather than searching only personal models. Gives accurate returned names and dates, paginates when needed, and states any display limit rather than claiming a partial list is complete. Makes no changes."
},
{
"description": "Find the designated Onboarding fixture in the directly shared collection. Run after case 1 in the same conversation. The reviewer must have accepted any invitation required for account access.",
"prompt": "Open the shared model named \"Onboarding\", show its site plan, and briefly explain what is in it.",
"tools_triggered": "listModels, getModel, canvas, entity, inspect_scene, showModel; run_typescript as needed",
"expected_behavior": "Searches listModels with workspace_id=\"shared\" and query=\"Onboarding\", resolves the matching returned model ID, and discovers its canvases. If multiple matches exist, asks which to use. Inspects the actual site plan, describes the returned content accurately, and calls showModel framed to that plan. Does not substitute an owned personal model or assume a shared link grants access. Makes no drawing changes."
},
{
"description": "Use the plan inspected in case 2. Its sofas are required test-fixture data. Inspect the actual sofa objects and their footprints before proposing replacements.",
"prompt": "Suggest two alternative sofa blocks for this plan. Do not change anything yet.",
"tools_triggered": "entity, block; run_typescript, inspect_scene or screenshot as needed",
"expected_behavior": "Identifies the existing sofas in the selected plan and uses a real library search such as api.block.search2d with Top viewpoint. Suggests two available sofa alternatives with names, dimensions and reasons supported by search results and the existing layout. Does not invent assets or modify the drawing. If the fixture lacks sofas or required library access, reports the setup problem instead of proceeding as though the case passed."
},
{
"description": "Apply the two actual sofa alternatives selected in case 3 to the identified sofas in the same shared fixture. Original sofas may be blocks or grouped drawing geometry; inspect their actual representation. Reset or duplicate the fixture before repeating the sequence.",
"prompt": "Replace the existing sofas with a mix of those two alternatives. Keep their positions and approximate sizes, and show me the updated plan.",
"tools_triggered": "block, entity, screenshot, showModel; run_typescript as needed",
"expected_behavior": "Records each targeted sofa\u2019s handles, count, center, orientation and footprint. Replaces only those sofas using both selected alternatives, preserving positions, orientations and approximate sizes. Verifies the target sofa count and unrelated drawing content remain unchanged, and checks the replacements fit their intended spaces. Captures a fresh screenshot and calls showModel for the updated plan. Does not edit sofas elsewhere in the model or claim success from a stale image."
},
{
"description": "Create a simple client-facing presentation sheet showing the updated site plan from case 4. Live paper-canvas viewing is supported without publishing a separate presentation revision.",
"prompt": "Create a simple client presentation showing the updated site plan and show it here.",
"tools_triggered": "canvas, presentation, screenshot, showModel; run_typescript as needed; showPresentation only if a valid published presentation link is available",
"expected_behavior": "Creates one additional presentation page with the updated site-plan view and an appropriate title. Verifies that the replacement sofa blocks are shown and that page content fits without unintended clipping or overlap. Preserves existing pages and source geometry. Uses a fresh screenshot and showModel on the paper canvas to display the new sheet; may use showPresentation if an active published revision exists. Does not claim paper-page creation automatically publishes a revision."
}
],
"negative": [
{
"description": "Purchasing assets and charging a payment method are outside the Rayon connector capabilities. Explain the limitation; do not attempt a purchase, invoke invented tools or claim a charge occurred.",
"prompt": "Buy the suggested items and charge my saved card."
},
{
"description": "The Rayon connector does not expose collaborator invitations or sharing-permission changes. Explain that the user must use the Rayon sharing interface. Do not claim to send an invitation or change permissions.",
"prompt": "Invite landscape-contractor@example.com to this model with editing access."
},
{
"description": "Native Revit export is not exposed by the Rayon connector. Explain that limitation, without claiming success, fabricating a download link, or relabelling an image or another format as an RVT file.",
"prompt": "Export this model as a native Revit (.rvt) file."
}
]
},
"demo_recording_url": "https://streamable.com/wp5ps2"
},
"publication": {
"countries": [],
"release_notes": "Updated the privacy policy to clarify integration data categories, uses, recipients, retention and user controls. Updated review-tool references to match the deployed MCP server."
},
"apps": "./.app.json"
}
}
}
SHA-256: f76d5e1ef7df8dd65aad25321581a57ab89e976f4b8354b236ea2cdeacd9bc27