prismatic-api
Prismatic API access patterns and GraphQL reference. Covers the two-tier access hierarchy (MCP tools → Prism CLI), CLI usage rules, GraphQL query patterns, pagination, authentication, and managing platform resources programmatically.
Skill body
Prismatic API
Reference documentation for Prismatic platform operations and the standardized API access hierarchy.
API Access Method Hierarchy
Prismatic API access follows a two-tier priority system for interactive agents (e.g., Orby). Builder agents (cni-builder, component-builder) use their own script-based pipelines and should not use MCP tools directly — see their agent docs for details.
Priority 1: MCP Tools (Interactive Agents Only)
Use MCP tools when operating within an interactive agent conversation (e.g., Orby). These handle auth, retries, and output formatting automatically.
| MCP Tool | Operation |
|---|---|
mcp__plugin_prismatic-skills_prism__prism_me |
Check auth / user profile |
mcp__plugin_prismatic-skills_prism__prism_components_list |
List / search components |
mcp__plugin_prismatic-skills_prism__prism_components_init |
Initialize new component |
mcp__plugin_prismatic-skills_prism__prism_components_publish |
Publish component |
mcp__plugin_prismatic-skills_prism__prism_components_generate_manifest |
Generate component manifest |
mcp__plugin_prismatic-skills_prism__prism_integrations_list |
List / search integrations |
mcp__plugin_prismatic-skills_prism__prism_integrations_init |
Initialize new CNI |
mcp__plugin_prismatic-skills_prism__prism_integrations_import |
Import / update CNI |
mcp__plugin_prismatic-skills_prism__prism_integrations_convert |
Convert YAML to CNI |
mcp__plugin_prismatic-skills_prism__prism_integrations_flows_list |
List flows for integration |
mcp__plugin_prismatic-skills_prism__prism_integrations_flows_test |
Test a flow |
mcp__plugin_prismatic-skills_prism__prism_integrations_flows_listen |
Listen for webhook payloads |
mcp__plugin_prismatic-skills_prism__prism_integrations_generate_flow |
Generate flow boilerplate |
mcp__plugin_prismatic-skills_prism__prism_integrations_generate_config_page |
Generate config page |
mcp__plugin_prismatic-skills_prism__prism_integrations_generate_config_var |
Generate config variable |
mcp__plugin_prismatic-skills_prism__prism_integrations_add_connection_config_var |
Add connection config var |
mcp__plugin_prismatic-skills_prism__prism_integrations_add_datasource_config_var |
Add datasource config var |
mcp__plugin_prismatic-skills_prism__prism_install_component_manifest |
Install component manifest in CNI |
mcp__plugin_prismatic-skills_prism__prism_install_legacy_component_manifest |
Legacy manifest install |
Priority 2: Prism CLI (Scripts + Agents)
For scripts and operations not covered by MCP tools:
Built-in commands (via prism-retry.ts):
prism integrations:list --extended --output json
prism components:publish --directory ./my-component
prism integrations:import --directory ./my-integration
Custom GraphQL queries (via shared/graphql.ts):
import { graphql, GraphQLError } from "./shared/graphql.js";
const data = graphql('query { customers { nodes { id name } } }');
Or directly via CLI:
prism graphql:query 'query { customers { nodes { id name } } }'
prism graphql:query 'query($id: ID!) { customer(id: $id) { name } }' \
--variables '{"id": "Q3VzdG9tZXI6..."}'
Decision Tree
Agent calling directly? → Use MCP tool if available, else `prism` via Bash
Script? → Use shared/graphql.ts for custom queries,
prism-retry.ts for built-in CLI commands
Rule: NEVER create inline GraphQL clients — always use shared/graphql.ts imports.
Common Operations Cheat Sheet
These are the most frequently needed GraphQL operations. Use these exact queries — don’t guess the field names.
| Operation | Reference File | Query/Mutation Name |
|---|---|---|
| Find test instance for an integration | references/instances.md → “Get Test (System) Instance” |
instances(integration: $id, isSystem: true) |
| Get execution result with logs | references/execution-and-logs.md → “Get Execution Result with Step Results” |
executionResult(id: $id) |
| Publish an integration version | references/integrations.md → “Mutation: Publish Integration” |
publishIntegration(input: { id: $id }) |
| Set marketplace availability | references/integrations.md → “Mutation: Set Marketplace Availability” |
updateIntegrationMarketplaceConfiguration |
| Clear instance persisted state | references/instances.md → “Mutation: Clear Instance Persisted State” |
updateInstance(input: { id: $id, persistedData: "{}" }) |
| Update config variables (safe) | references/instances.md → “Mutation: Update Instance Config Variables” |
updateInstanceConfigVariables (NOT updateInstance) |
Read the referenced file section for the full query with all fields. Do not reconstruct queries from memory.
CLI Usage Rules
prismmust be installed globally (npm install -g @prismatic-io/prism) — never usenpx prism- All list commands: always use
--extended --output json --extendedand--columnsare mutually exclusive — always prefer--extended- For
graphql:query: always use--variablesflag, never string interpolation - Auth is handled by the CLI — no custom token exchange needed
API Endpoint
- URL:
{PRISMATIC_URL}/api(default:https://app.prismatic.io/api) - Method: HTTP POST with JSON body
{"query": "...", "variables": {}} - Auth: Bearer token in
Authorizationheader - Content-Type:
application/json
Authentication
Obtain tokens via Prism CLI. See references/authentication.md.
Quick reference:
prism me:token- Short-lived access tokenprism me:token --type refresh- Long-lived refresh token- Access tokens valid for 7 days, auto-refreshed 5 minutes before expiry
- All authenticated requests return HTTP 200, even on errors - always check
errorsarray
Pagination
All collection queries use Relay cursor-based pagination. See references/pagination-and-filtering.md.
query($after: String) {
resources(after: $after, first: 100) {
nodes { id name }
pageInfo { hasNextPage endCursor }
}
}
Critical Patterns
- Enum values are lowercase strings:
variableScope: "customer"not"CUSTOMER",managedBy: "org"not"ORG" - Use
updateInstanceConfigVariables(partial, safe) notupdateInstance(replaces ALL config vars) - Always deploy after config changes: Call
deployInstanceto activate - Use parameterized variables: Never string-concatenate into queries
- Check mutation errors: Mutations return
errors { field messages }alongside results
Key References by Resource Type
Core Resources
references/customers.md- Customer CRUD, external IDs, labelsreferences/integrations.md- Integration management, publishing, testingreferences/instances.md- Instance deployment, config variables, lifecyclereferences/components.md- Component queries, action introspection, search
Connections & Config
references/connections.md- Scoped config vars, customer config vars, connection managementreferences/config-variables.md- Instance config updates, deployment patterns
Operational
references/execution-and-logs.md- Execution results, step results, log queries, replayreferences/common-patterns.md- Batch operations, nested queries, aliased mutations, error handlingreferences/api-access-methods.md- Detailed MCP tool reference, CLI patterns, migration notes