Developer

Applets API

Read applet metadata from your custom applet.

The Applets API provides read-only access to applet metadata. Use it to discover other applets in the workspace, for cross-applet integrations or dashboards.

Capability required: resources:read

Frontend (iframe)

import { createResourceClient } from "@rightplace/sdk";

const rp = createResourceClient();
await rp.ready();

// List all applets across all projects
const all = await rp.resources.list();
// -> [{ id: "r1", name: "My API", type: "custom/api-monitor", projectId: "p1" }, ...]

// List applets in a specific project
const projectResources = await rp.resources.list("project-id-here");

Backend (Node.js)

import { createResourceServer } from "@rightplace/sdk/server";

const server = createResourceServer({
  methods: {
    getDashboardData: async (_params, { rp }) => {
      const resources = await rp.resources.list();
      return {
        totalResources: resources.length,
        byType: resources.reduce((acc, r) => {
          acc[r.type] = (acc[r.type] || 0) + 1;
          return acc;
        }, {}),
      };
    },
  },
});

server.start();

MCP

Agents get both read and write access to applets - this is the primary integration surface for custom applet automation.

ToolPurposePermission
rightplace_list_resourcesApplets in a projectresource:read
rightplace_get_resourceOne applet + configJsonresource:read
rightplace_resource_typesRegistered applet typesresource:read
rightplace_create_resourceNew applet (any registered type)resource:create
rightplace_update_resourceRename / reconfigureresource:write
rightplace_delete_resourceRemove appletresource:delete

rightplace_create_resource accepts projectId, type, name, and a configJson shape defined by the applet type (see the frontend registrations in builtinRegistrations).

RobinPath Bridge

# Discover types
rightplace.resource_types into $types
for $t in $types
  log $t.type $t.label
endfor

# List applets in a project
rightplace.list_resources {projectId: "proj_abc"} into $resources
for $r in $resources
  log $r.id $r.name $r.type
endfor

# Create a doc applet
rightplace.create_resource {
  projectId: "proj_abc",
  type: "docs",
  name: "Design Notes",
  configJson: {folderPath: "rightplace/docs/design-notes"}
} into $created
log "created:" $created.id

# Update + delete
rightplace.update_resource {id: $created.id, name: "Design Notes (v2)"}
rightplace.delete_resource {id: $created.id}

Every scope above is enforced server-side; a script missing resource:create will see rightplace.create_resource throw.

API Reference

rp.resources.list(projectId?)

ParameterTypeDescription
projectIdstring (optional)Filter by project ID. Omit to list all applets.
ReturnsPromise<ResourceInfo[]>Array of applet metadata

ResourceInfo

FieldTypeDescription
idstringApplet ID
namestringApplet display name
typestringApplet type (e.g. wordpress, custom/my-type)
projectIdstringOwning project ID

Manifest Configuration

{
  "capabilities": [
    "resources:read"
  ]
}

Notes

  • This API is read-only. Applets cannot create, update, or delete other applets.
  • The configJson is not exposed to prevent leaking credentials or connection details between applets.
  • Results include both built-in and custom applet types.