Regions, items, buttons, processes, and dynamic actions are the fundamental building blocks of every Oracle APEX page. apex-mcp exposes tools to create each component type programmatically — the same operations you would perform in the App Builder UI, but driven entirely by your AI assistant. Components are always added to a page that belongs to an active import session started withDocumentation Index
Fetch the complete documentation index at: https://mintlify.com/TechFernandesLTDA/apex-mcp/llms.txt
Use this file to discover all available pages before exploring further.
apex_create_app. The typical authoring order is: create a region → add items to that region → add buttons → add processes triggered by those buttons → optionally attach dynamic actions for client-side behaviour.
Regions
A region is a named container that holds other components and renders as a section on the page. APEX supports many native region types; apex-mcp maps a short friendly name to each one.apex_add_region
Add a region to an APEX page.The numeric ID of the page to add the region to. The page must already exist (created with
apex_add_page).Display name shown in the region header and in the App Builder tree.
Type of region. Accepted values:
| Value | Description |
|---|---|
static / html | Static HTML content (provide static_content) |
ir | Interactive Report — best for data grids (provide source_sql) |
form | Form container — create the region first, then add items with apex_add_item |
chart | Oracle JET Chart (provide source_sql) |
plsql | PL/SQL Dynamic Content (provide source_sql) |
cards | Native Cards region |
list | Native List region |
tree | Native Tree region |
map | Native Map region |
SQL query for
ir, chart, and plsql region types. Always include a WHERE clause and column aliases for readability.Raw HTML for
static / html region types.Display order on the page. Use multiples of 10 (10, 20, 30) to allow future insertions between regions.
Override the default region template ID. Uses the type-appropriate default when omitted.
Page layout slot. Options:
BODY, BREADCRUMB_BAR, AFTER_HEADER, BEFORE_FOOTER, AFTER_FOOTER.Extra template option key/value pairs merged into the template options string.
Custom label overrides for Interactive Report regions. Supported keys:
no_data_found and max_row_count. English defaults are used when omitted.Colon-separated list of download formats enabled in Interactive Report toolbars.
For Interactive Report regions, apex-mcp automatically creates the underlying worksheet definition (
create_worksheet) including pagination, download formats, and notification settings.apex_list_regions
List all regions on a specific page, reading live data fromAPEX_APPLICATION_PAGE_REGIONS.
Application ID.
Page ID to inspect.
{ "status": "ok", "data": [...], "count": N } where each element includes region_id, region_name, region_type, display_sequence, source_type, region_source, authorization_scheme, condition_type, and region_template.
apex_update_region
Update properties of an existing region. Uses a directUPDATE on the internal WWV_FLOW_PAGE_PLUGS table.
Application ID.
Page ID.
Current exact name of the region to update.
New display name for the region.
New SQL source for IR or chart regions.
New HTML content for static regions.
New display sequence number.
New authorization scheme name.
New condition type controlling region visibility.
New condition expression.
apex_delete_region
Permanently delete a region and all its child items, buttons, and sub-regions.Application ID.
Page ID.
Exact region name (case-insensitive). Use
apex_list_regions to confirm the name first.Items
Page items are the input controls (text fields, select lists, date pickers, etc.) that live inside a region. APEX requires items to follow the naming conventionP{page_id}_{NAME} — apex-mcp enforces this automatically, prepending the prefix if you omit it.
apex_add_item
Add a single form item to a region.Page ID that owns the item.
Name of the parent region (must already exist via
apex_add_region).Item name following the
P{page_id}_{NAME} convention. Automatically prefixed with P{page_id}_ if you supply only the bare name (e.g. "FIRST_NAME" becomes "P10_FIRST_NAME").Input type. Supported values:
| Value | APEX control |
|---|---|
text | Text input |
number | Numeric input with automatic validation |
date | Date picker (APEX native popup) |
select | Select list — requires lov_name |
hidden | Hidden field (no label rendered) |
textarea | Multi-line text input |
yes_no / switch | Yes/No toggle switch |
password | Masked password field |
display | Display-only, non-editable |
checkbox | Checkbox group — requires lov_name |
radio | Radio button group — requires lov_name |
rich_text | Rich text (WYSIWYG) editor |
color_picker | Colour picker |
star_rating | Star rating input |
slider | Range slider |
qr_code | QR code display |
Display label shown above or beside the field. Auto-generated from the item name (stripping the
P{n}_ prefix and title-casing) when omitted.Display order within the region.
Database column name for automatic DML binding. Enables the item to be pre-populated from the database when the page loads in edit mode (e.g.
"FIRST_NAME").Shared LOV name (from
apex_add_lov) or inline SQL query for select, radio, and checkbox items. Inline SQL that starts with SELECT or WITH is bound with p_lov; a named LOV uses p_named_lov.Show the required indicator (*) and apply a NOT NULL field template.
Placeholder text shown inside empty text inputs.
Default item value. Supports APEX substitution strings, e.g.
"&APP_USER.".Render the item as read-only (value displayed but not editable by the user).
Number of grid columns to span (1–12). Use values greater than 1 for wide fields.
apex_list_items
List all items on a page, optionally scoped to a single region.Application ID.
Page ID.
Filter results to this region only. Empty string returns items from all regions.
{ "status": "ok", "data": [...], "count": N }. Each element includes item_name, item_label, item_type, sequence, region, default_value, source_column, lov_definition, placeholder, colspan, and condition fields.
apex_update_item
Update properties of an existing page item using a directUPDATE on WWV_FLOW_STEP_ITEMS.
Application ID.
Page ID.
Exact item name, e.g.
P10_STATUS.New display label.
New APEX native type string (e.g.
NATIVE_TEXT_FIELD, NATIVE_SELECT_LIST).New default value expression.
New database source column for DML binding.
New LOV query for select lists.
Set required (
true) or optional (false).New placeholder text.
Set read-only (
true) or editable (false).apex_delete_item
Permanently delete a single item from a page.Application ID.
Page ID.
Exact item name (case-insensitive). Use
apex_list_items to confirm the name.apex_bulk_add_items
Add multiple form items to a region in a single call. More efficient than callingapex_add_item once per field when building forms.
Target page ID.
Parent region name (must already exist).
List of item descriptor objects. Each object supports:
| Key | Type | Required | Description |
|---|---|---|---|
name | string | ✅ | Item name, auto-prefixed with P{page_id}_ |
label | string | Display label; auto-generated if omitted | |
type | string | text | number | date | select | textarea | hidden | yes_no | password | |
required | boolean | Shows required indicator | |
lov | string | LOV SQL for select type | |
default | string | Default value | |
placeholder | string | Placeholder text | |
colspan | int | Grid columns to span (1–12) |
Sequence number for the first item. Each subsequent item increments by 10.
items_created list (the successfully created item names) and any errors.
Buttons
Buttons trigger page submission or redirect navigation. They live inside a region and can be conditional.apex_add_button
Add a button to a region.Page ID.
Parent region name (must already exist).
Internal button name (stored in uppercase). Conventional names:
CREATE, SAVE, DELETE, CANCEL. Used to wire processes via condition_button in apex_add_process.Button label text visible to the user.
Button behaviour:
| Value | Behaviour |
|---|---|
submit | Submit the page — triggers all page processes |
redirect | Navigate to url without submitting |
da | Defined by Dynamic Action — no built-in action |
Display order among buttons in the region.
Placement relative to region content:
BELOW_BOX, ABOVE_BOX, or RIGHT_OF_TITLE.Mark as the primary action (filled/highlighted style). Use
true for the main Save or Submit button.Font APEX icon class, e.g.
"fa-save" or "fa-trash-o". When provided, the icon-button template is used automatically.Redirect URL for
action="redirect". Supports APEX substitution strings, e.g. "f?p=&APP_ID.:1:&APP_SESSION.::&DEBUG.:::".Controls when the button is rendered. Common values:
ITEM_IS_NOT_NULL (show when item has a value), ITEM_IS_NULL (show when item is empty).Item name or expression for the condition. E.g.
"P10_EMP_ID" to show DELETE only when editing an existing record.apex-mcp stores the button ID in session state so that
apex_add_process can wire a condition_button to the correct button using wwv_flow_imp.id(...) automatically.apex_delete_button
Permanently delete a button from a page.Application ID.
Page ID.
Exact button name (case-insensitive).
Processes
Page processes are server-side actions that run during the page submission lifecycle. The most common types are Automatic DML (insert/update/delete against a table) and custom PL/SQL blocks.apex_add_process
Add a server-side process to a page.- DML Process
- PL/SQL Process
- AJAX Callback
Page ID.
Display name for the process.
Type of process:
| Value | Behaviour |
|---|---|
dml | Automatic DML — INSERT/UPDATE/DELETE against table_name; requires table_name |
plsql | Custom PL/SQL anonymous block; provide source |
ajax | AJAX Callback — PL/SQL callable via apex.server.process(); runs at ON_DEMAND |
close_dialog | Close a modal dialog |
clear_cache | Clear page cache |
Execution order when multiple processes exist.
PL/SQL source block for
plsql and ajax types.Table name for
dml type, e.g. "EMPLOYEES". Stored in uppercase.Page item to receive the returned primary key after an INSERT operation.
Button name that must have been clicked to trigger this process. Leave empty to run on every submit. apex-mcp resolves the button name to its internal ID automatically using session state.
Notification message shown to the user on success.
Custom inline error message displayed on failure.
Execution point in the page lifecycle:
AFTER_SUBMIT, BEFORE_HEADER, or ON_SUBMIT_BEFORE_COMPUTATION. AJAX processes always use ON_DEMAND regardless of this setting.apex_list_processes
List all server-side processes on a page.Application ID.
Page ID.
{ "status": "ok", "data": [...], "count": N }. Each element includes process_name, process_type, process_sequence, process_point, process_sql, condition_type, when_button_pressed, success_message, and error_message.
Dynamic Actions
Dynamic Actions (DAs) are client-side event handlers defined declaratively in APEX. They react to browser events (click, change, page load, etc.) and execute one or more actions in TRUE and/or FALSE branches without writing raw JavaScript event listeners.apex_add_dynamic_action
Add a Dynamic Action to a page.- Show / Hide on Change
- Execute JavaScript on Click
- On Page Load
Page ID.
Unique name for this Dynamic Action.
Triggering browser event:
| Value | When it fires |
|---|---|
click | Element clicked |
change | Item value changes |
page-load | DOM ready (page first renders) |
keydown | Key pressed |
custom | Custom jQuery event |
Item name (e.g.
P10_DEPT_ID) or button name that fires the event. Item names starting with P followed by a digit and an underscore are treated as page items; everything else is treated as a jQuery selector. Leave empty for page-level events such as page-load.Action executed in the TRUE branch:
| Value | What it does |
|---|---|
execute_javascript | Run javascript_code |
submit_page | Submit the APEX page |
set_value | Set an item value |
show | Show an element |
hide | Hide an element |
enable | Enable an item |
disable | Disable an item |
refresh | Refresh a region |
plsql | Run plsql_code via AJAX |
JavaScript to execute in the TRUE branch (for
execute_javascript). Has access to apex.item() and apex.server.process().PL/SQL block for the TRUE branch (for
plsql action type). References page items via :ITEM_NAME bind variables.Item or region name affected by the TRUE branch action.
Execution order.
Also execute the TRUE branch action when the page first loads.
Action type for the FALSE branch. When provided, a FALSE branch action is created alongside the TRUE branch. Use with
action_type="show" / false_action_type="hide" for symmetric conditional visibility.JavaScript for the FALSE branch (for
execute_javascript false action).Item or region name affected by the FALSE branch action.
apex-mcp validates JavaScript for unsafe patterns (
eval(), document.write()) and returns warnings in the response warnings array. The action is still created — the warnings are advisory.apex_list_dynamic_actions
List all Dynamic Actions on a page, each with their nested action steps.Application ID.
Page ID.
{ "status": "ok", "data": [...], "count": N }. Each element contains the DA event header plus an actions array of action steps. Action steps include action, action_sequence, affected_elements, and javascript_code.