Skip to main content

Documentation 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.

The inspect tools let you read and modify existing APEX applications without going through the create/finalize lifecycle. All read tools query the APEX_APPLICATION_* data dictionary views. All update and delete tools operate directly on the internal WWV_FLOW_* metadata tables, bypassing the App Builder UI entirely — changes take effect immediately.
No import session required. For existing applications you do not need to call apex_create_app() or apex_finalize_app(). Every inspect and update tool works on any application that exists in the database, as long as you have an active connection from apex_connect().
Direct table updates bypass APEX UI validation. After any apex_update_* or apex_delete_* call, verify the result in APEX App Builder to ensure the application renders correctly. Delete operations are permanent and cannot be undone without a backup.

Reading App Structure

These tools are read-only and safe to call at any time. They query APEX data dictionary views and never modify the database.

apex_get_app_details

Return complete metadata for an existing APEX application: name, alias, status, theme, authentication scheme, page list, application items, application processes, authorization schemes, navigation lists, and shared LOVs.
app_id
integer
required
Application ID to inspect.
Returns: JSON with status, app (metadata row), pages (array), page_count, application_items, application_processes, authorization_schemes, navigation_lists, and lovs.

apex_get_page_details

Return all components on a specific page: regions, items, buttons, processes, dynamic actions (with nested action steps), computations, and validations.
app_id
integer
required
Application ID.
page_id
integer
required
Page ID to inspect.
Returns: JSON with status, page (metadata row), regions, items, buttons, processes, dynamic_actions, computations, and validations.

apex_list_regions

List all regions on a page with their type, source, display sequence, parent region, template, and condition settings.
app_id
integer
required
Application ID.
page_id
integer
required
Page ID.
Returns: JSON with status, data (array of region objects), and count.

apex_list_items

List all form items on a page. Optionally filter by region name.
app_id
integer
required
Application ID.
page_id
integer
required
Page ID.
region_name
string
default:"\"\""
Filter results to items in a specific region. Case-insensitive. Leave empty to return items from all regions.
Returns: JSON with status, data (array with item_name, item_label, item_type, sequence, region, default_value, source_column, format_mask, lov_definition, placeholder, and condition fields), and count.

apex_list_processes

List all server-side processes on a page with their type, execution point, PL/SQL source, condition, and success/error message settings.
app_id
integer
required
Application ID.
page_id
integer
required
Page ID.
Returns: JSON with status, data (array of process objects), and count.

apex_list_dynamic_actions

List all Dynamic Actions on a page. Each DA event object includes its nested action steps (actions[] array) with action type, sequence, affected elements, and any JavaScript code.
app_id
integer
required
Application ID.
page_id
integer
required
Page ID.
Returns: JSON with status, data (array of DA event objects, each with a nested actions array), and count.

apex_list_lovs

List all shared Lists of Values (LOVs) for an application with their name, type, query, and creation/update timestamps.
app_id
integer
required
Application ID.
Returns: JSON with status, data (array with lov_name, lov_type, lov_query, created_on, updated_on), and count.

apex_list_auth_schemes

List all authorization schemes for an application with their name, type, PL/SQL expression or function body (stored in attribute_01 for PLSQL_EXPRESSION and PLSQL_FUNCTION_RETURNING_BOOLEAN types), error message, and caching setting.
app_id
integer
required
Application ID.
Returns: JSON with status, data (array with authorization_scheme_name, authorization_scheme_type, attribute_01, error_message, caching), and count.

apex_diff_app

Compare two APEX applications and return a structural diff: pages only in app 1, pages only in app 2, pages in both, regions only in each app, and items only in each app (with P_ prefix normalization so P10_NAME and P20_NAME compare as equivalent across apps).
app_id_1
integer
required
First application ID (base application).
app_id_2
integer
required
Second application ID (comparison target).
Returns: JSON with status, app_1, app_2, and a diff object containing pages, regions, and items sections, each with only_in_app_1, only_in_app_2, and in_both / in_both_count keys.
Example diff response (abbreviated)
{
  "status": "ok",
  "app_1": { "id": 100, "name": "HR Dev",  "pages": 15 },
  "app_2": { "id": 200, "name": "HR Prod", "pages": 14 },
  "diff": {
    "pages": {
      "only_in_app_1": [{ "page_id": 99, "page_name": "Debug" }],
      "only_in_app_2": [],
      "in_both": [{ "page_id": 1, "page_name_app_1": "Home", "page_name_app_2": "Home" }]
    },
    "regions": { "only_in_app_1": [], "only_in_app_2": [], "in_both_count": 42 },
    "items":   { "only_in_app_1": [], "only_in_app_2": [], "in_both_count": 87 }
  }
}

Updating Components

These tools issue direct UPDATE statements on APEX internal tables. At least one optional field must be provided per call.

apex_update_region

Update properties of an existing region. Operates on WWV_FLOW_PAGE_PLUGS.
app_id
integer
required
Application ID.
page_id
integer
required
Page ID.
region_name
string
required
Current name of the region to update. Case-insensitive.
new_name
string
New display name for the region.
new_source_sql
string
New SQL source for Interactive Report or chart regions.
new_static_content
string
New HTML content for static regions.
new_sequence
integer
New display sequence number.
new_auth_scheme
string
New authorization scheme name.
new_condition_type
string
New condition type (e.g., "NEVER", "EXPRESSION1_IS_NOT_NULL").
new_condition_expr
string
New condition expression.
Returns: JSON with status, app_id, page_id, region_name, changed (dict of updated field names and new values), message, and warning.
If the current schema user does not have UPDATE on WWV_FLOW_PAGE_PLUGS, the error response includes the exact GRANT statement to run as APEX Admin.

apex_update_item

Update properties of an existing page item. Operates on WWV_FLOW_STEP_ITEMS.
app_id
integer
required
Application ID.
page_id
integer
required
Page ID.
item_name
string
required
Item name, e.g. "P10_USERNAME". Case-insensitive.
new_label
string
New display label.
new_item_type
string
New item type constant, e.g. "NATIVE_TEXT_FIELD", "NATIVE_SELECT_LIST".
new_default_value
string
New default value expression.
new_source_column
string
New database source column for DML operations.
new_lov_definition
string
New LOV query for select lists.
new_is_required
boolean
True to make the item required (field_required = 'Y'), False to make it optional.
new_placeholder
string
New placeholder text displayed in the input field.
new_read_only
boolean
True to set read_only_when_type = 'ALWAYS', False to make the item editable.
Returns: JSON with status, app_id, page_id, item_name, changed, message, and warning.

apex_update_page

Update page-level settings. Operates on WWV_FLOW_STEPS.
app_id
integer
required
Application ID.
page_id
integer
required
Page ID.
new_name
string
New page display name.
new_title
string
New browser/tab title.
new_auth_scheme
string
New authorization scheme name. Pass an empty string "" to remove the authorization requirement.
new_page_mode
string
New page mode. Valid values: "NORMAL", "MODAL_DIALOG", "NON_MODAL_DIALOG".
Returns: JSON with status, app_id, page_id, updated_fields, message, and warning.

apex_copy_page

Copy a page from one application to another (or within the same application with a new page ID). Calls wwv_flow_copy.copy_page() with a fallback to wwv_flow_utilities.copy_page().
source_app_id
integer
required
Source application ID.
source_page_id
integer
required
Source page ID to copy.
target_app_id
integer
required
Target application ID (can be the same as source_app_id).
target_page_id
integer
required
New page ID in the target application. Must not already exist.
new_page_name
string
default:"\"\""
Name for the copied page. Defaults to "Copy of {original_name}".
Returns: JSON with status, source_app_id, source_page_id, target_app_id, target_page_id, new_page_name, and message.

Deleting Components

All delete operations are permanent and irreversible without a database backup. Deleting a region also deletes all its child items, buttons, and sub-regions. Deleting a page deletes all its components. Always verify in APEX App Builder after any delete.

apex_delete_region

Delete a specific region and all its child items, buttons, and sub-regions.
app_id
integer
required
Application ID.
page_id
integer
required
Page ID.
region_name
string
required
Exact region name. Case-insensitive. Use apex_list_regions() to confirm the exact name.
Returns: JSON with status, region_name, plug_id, child_items_deleted (count), message, and warning.

apex_delete_item

Delete a specific form item from a page.
app_id
integer
required
Application ID.
page_id
integer
required
Page ID.
item_name
string
required
Item name, e.g. "P10_STATUS". Case-insensitive.
Returns: JSON with status, item_name, message, and warning.

apex_delete_button

Delete a specific button from a page.
app_id
integer
required
Application ID.
page_id
integer
required
Page ID.
button_name
string
required
Button name, e.g. "CREATE" or "SAVE". Case-insensitive.
Returns: JSON with status, button_name, message, and warning.

apex_delete_page

Delete an entire page and all its components from an application. Cannot delete Page 0 (the Global Page).
app_id
integer
required
Application ID.
page_id
integer
required
Page ID to delete. Must not be 0.
Returns: JSON with status, app_id, page_id, page_name, message, and warning.

Inspect Workflow Example

The following sequence shows a typical workflow for diagnosing and fixing an issue in an existing application — no import session required:
# Step 1: Connect to Oracle ADB
apex_connect()

# Step 2: Get the full app structure to understand what's there
apex_get_app_details(app_id=200)
# → Returns app name, theme, pages list, auth schemes, LOVs, etc.

# Step 3: Drill into a specific page
apex_get_page_details(app_id=200, page_id=10)
# → Returns all regions, items, buttons, processes on page 10

# Step 4: List just the regions if the full detail is too verbose
apex_list_regions(app_id=200, page_id=10)
# → [{"region_name": "Products", "source_type": "SQL", ...}, ...]

# Step 5: Fix the region's SQL query — takes effect immediately
apex_update_region(
    app_id=200,
    page_id=10,
    region_name="Products",
    new_source_sql="SELECT product_id, product_name, price, status FROM products ORDER BY product_name"
)
# → {"status": "ok", "changed": {"plug_source": "(updated)"}, ...}

# Step 6: Verify the fix by checking the region source again
apex_list_regions(app_id=200, page_id=10)

# Step 7: If a stale debug item exists, remove it
apex_delete_item(app_id=200, page_id=10, item_name="P10_DEBUG_FLAG")
# → {"status": "ok", "message": "Item 'P10_DEBUG_FLAG' deleted ..."}

Build docs developers (and LLMs) love