Skip to main content
Glama

FMEPM Connect for Oracle EPM

Call a write REST operation

epm_rest_write
Destructive

Calls one PUT, POST or DELETE operation of the Oracle EPM REST API that is not a job, by catalog id (see list_rest_operations): add a member, set or delete a substitution variable, import or clear a data slice. Only write operations are reachable here. Change sets are the safer option for member edits and production substitution variables. Selective artifact exports use exportCategoriesArtifactsV2 with snapshotName and categories containing categoryName and explicit selectedArtifacts from current Oracle inventory. Folder paths end with /. An omitted selection exports the whole category. Saved snapshots and repeat exports can miss new forms; compare current inventory with the exported entries. Use it for other changes the dedicated tools lack. Newly reviewed operations require a preview first, then confirm: true on the same arguments. Oracle's reference: https://docs.oracle.com/en/cloud/saas/enterprise-performance-management-common/prest/ For a write, I require a preview first, then confirm: true and its confirmationToken. The token lasts ten minutes and works once.

Tool call template

Replace each placeholder with a value matching the input schema. Only required parameters are included; add optional parameters as needed.

{
  "id": 1,
  "jsonrpc": "2.0",
  "method": "tools/call",
  "params": {
    "arguments": {
      "operationId": "<operationId>"
    },
    "name": "epm_rest_write"
  }
}

Input Schema

NameRequiredDescriptionDefault
bodyNoRequest body as Oracle documents it for the operation
queryNoDocumented query parameters.
paramsNoPath parameters by placeholder name, e.g. { cube: "Plan1", name: "CurrMonth" }. app is filled from the application argument and must not be passed here.
confirmNoSet true after the user has approved the previewed change
contentNoFile content as UTF-8 text or canonical base64. At most 10 MiB after decoding.
encodingNoHow content is encoded.text
connectionNoConnection id or label from list_connections. Defaults to the user's default connection.
applicationNoApplication name. Defaults to the connection's application.
operationIdYesCatalog id of a write operation, e.g. addMember, setSubstitutionVariable, deleteSubstitutionVariable
productionPodNoExact pod from the second security approval.
confirmationTokenNoSingle-use token from this exact preview. Send it with confirm: true after the user approves. It expires after ten minutes.
productionApprovalIdNoReceipt from the second security approval.

Schema Changelog

Changes observed during successful MCP inspections.

  1. Added

TDQS

A4.4/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already flag destructive/openWorld/non-idempotent, and the description adds a substantial protocol on top: preview first, then confirm: true with a confirmationToken that is single-use and expires in ten minutes, plus productionPod and productionApprovalId from a second security approval. It also warns that saved snapshots and repeat exports can miss new forms and that current inventory must be compared.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The purpose is front-loaded, but the middle section lurches into exportCategoriesArtifactsV2 specifics (snapshotName, categories, selectedArtifacts, inventory comparison) that read as notes for one operation rather than a general write tool. Those sentences are also restated awkwardly by the later 'For a write, I require a preview first' sentence, which duplicates the earlier confirm instructions.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a 12-parameter, nested-object, destructive, open-world tool with no output schema, the description covers the risky parts well: the approval/token flow, the safety alternatives, and the catalog-id dependency on list_rest_operations. The gap is that it never says what a call returns or how to interpret results (especially for batch operations like clearDataSlices or lcmImportV2), which the absent output schema would otherwise require.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so confirming baseline is 3; the description earns above that by explaining the preview/confirm/token flow that governs the confirm and confirmationToken parameters and by pointing operationId at list_rest_operations. It also adds operational constraints not in the schema ('Folder paths end with /', 'An omitted selection exports the whole category'), though these apply to only a couple of the 70+ catalog entries.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Opens with a specific verb+resource and scope: 'Calls one PUT, POST or DELETE operation of the Oracle EPM REST API that is not a job, by catalog id.' It immediately carves out the boundary versus epm_rest_read (reads) and epm_rest_run_job (jobs), and frames itself as the escape hatch when dedicated tools don't cover a change.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

'Use it for other changes the dedicated tools lack' plus 'Change sets are the safer option for member edits and production substitution variables' gives a real use-vs-alternative rule, and 'Only write operations are reachable here' sets the exclusion. It stops short of naming the specific dedicated siblings (clear_data_slice, import_data_slice, update_substitution_variable) that should be preferred, leaving the agent to map the catalog.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.

Resources