Sciple Platform MCP Server
OfficialServer Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
| SCIPLE_PLATFORM_URL | No | The URL of the Sciple platform (optional, only needed if multiple platforms cached) |
Instructions
Guidance the server publishes about itself, which clients place ahead of the tool catalog so the model reads it before choosing anything.
This server publishes no instructions, or was last inspected before Glama recorded them.
Capabilities
Features and capabilities supported by this server
Protocol revision2025-11-25
| Capability | Details |
|---|---|
| tools | {
"listChanged": false
} |
| prompts | {
"listChanged": false
} |
| resources | {
"subscribe": false,
"listChanged": false
} |
| experimental | {} |
Tools
Functions exposed to the LLM to take actions
| Name | Description |
|---|---|
| athena_list_workspacesA | List Athena workspaces in this tenant. Each workspace pins an AWS account + region + Athena workgroup as a
query target. The returned id is the value to pass as |
| athena_list_databasesA | List Glue databases visible to a workspace. Args: workspace_id: The Athena workspace id (from athena_list_workspaces). |
| athena_list_tablesA | List tables in a Glue database. Args: workspace_id: The Athena workspace id. database: The Glue database name. |
| athena_describe_tableA | Show columns and partition keys for a single table. Args: workspace_id: The Athena workspace id. database: The Glue database name. table: The table name. |
| athena_run_queryA | Run a SQL query against an Athena workspace; polls until SUCCEEDED /
FAILED / CANCELLED or Read-only / multi-statement / UNLOAD violations come back as 400 with a
structured Args: workspace_id: The Athena workspace id. sql: A single SQL statement (the parser gate rejects multi-statement). max_wait_seconds: How long to poll before timing out (caller can resume with athena_get_execution_status). Default 60. |
| athena_get_execution_statusA | Poll a single tick. Use when athena_run_query timed out. Args: execution_id: The Athena execution id. |
| athena_get_resultsA | Fetch the next 1000-row page of results from a SUCCEEDED execution. Args: execution_id: The Athena execution id. next_token: Optional page token returned by a previous call. |
| athena_cancelA | Cancel an in-flight Athena execution (StopQueryExecution server-side). Args: execution_id: The Athena execution id. |
| athena_save_queryB | Persist a SQL query under the caller's user, scoped to a workspace. Args: workspace_id: The Athena workspace id this saved query belongs to. name: Short label for the saved query. sql: The SQL text to save. |
| athena_list_savedA | List the caller's saved Athena queries, optionally filtered to a workspace. Args: workspace_id: Optional Athena workspace id to filter the list. |
| athena_historyA | Recent Athena executions for the caller (per-user history). Args: workspace_id: Optional Athena workspace id to filter the list. limit: Max rows to return (1-500). Default 20. |
| list_aws_accountsA | List the AWS accounts connected to this tenant. Returns each account's internal id (used as |
| list_cloud_resource_typesA | List the resource types synced for one AWS service in an account. Use this to discover what Args:
account_id: Internal account id from |
| query_cloud_resourcesA | Query cached rows from any synced AWS resource table (read-only). Generic accessor over every supported service. Call
Args:
account_id: Internal account id from |
| list_ec2_instancesA | Summarize EC2 instances — for one account or across all of them. Convenience view over Args:
account_id: Internal account id from |
| db_list_connectionsA | List SQL Console connections (RDS Postgres / MySQL) in this tenant. |
| db_describe_schemaC | Introspect a connection (databases / schemas / tables / columns). Args: connection_id: The DB Console connection id. |
| db_queryA | Run a SQL statement synchronously against a SQL Console connection. The caller's access profile (server-side) gates read-only vs read-write; an INSERT through a read-only profile errors at the platform, not here. Args: connection_id: The DB Console connection id. sql: A single SQL statement to execute. |
| db_save_queryC | Persist a SQL query under the caller's user, scoped to a connection. Args: connection_id: The DB Console connection id this saved query belongs to. name: Short label. sql: The SQL text. |
| db_list_savedA | List the caller's saved DB Console queries. Args: connection_id: Optional connection id to filter the list. |
| list_environmentsA | List all environments in the tenant (id, name, slug, group, default flag). |
| create_environmentA | Create an environment. Args: name: Display name, e.g. "Production". slug: URL-safe id; server generates one from name if omitted. environment_group_id: Optional parent environment-group id. description: Optional human description. is_default: Mark this the tenant's default environment. display_order: Sort order in the UI (lower = earlier). |
| update_environmentB | Update an environment. Only provided fields change. Args: env_id: The environment id to update. name: New display name. description: New description. environment_group_id: Move to a different environment group. is_default: Set/unset default. display_order: New sort order. |
| delete_environmentA | Delete an environment by id. This cannot be undone. Args: env_id: The environment id to delete. |
| list_environment_groupsB | List environment groups (id, name, slug, aws account binding). |
| create_environment_groupB | Create an environment group. Args: name: Display name, e.g. "Production accounts". slug: URL-safe id; generated from name if omitted. description: Optional description. display_order: Sort order in the UI. aws_account_id: Optional AWS account id to bind the group to. |
| list_dashboardsA | List all observability dashboards in the tenant (id, name, panel count). |
| get_dashboardA | Get a single dashboard's name, description, and panel list. Args: dashboard_id: The dashboard id to retrieve. |
| create_dashboardA | Create a new observability dashboard. Args: name: Dashboard display name (1-200 characters, must be unique within tenant). description: Optional human-readable description. |
| update_dashboardA | Replace a dashboard's name and description (full PUT — name is required). The API uses PUT with DashboardWrite: name is always required; description is optional (omitting it sets it to null on the server). Args: dashboard_id: The dashboard id to update. name: New display name (1-200 characters, must be unique within tenant). description: New description; pass null/omit to clear it. |
| delete_dashboardA | Delete a dashboard and all its panels. This cannot be undone. Args: dashboard_id: The dashboard id to delete. |
| add_panelA | Add a panel to a dashboard. A panel belongs to ONE of five shapes — pick one based on what the user wants and supply only that shape's parameters:
ALWAYS pass Recommended panel_type per shape: line / bar / stat / gauge → metric panels logs / log_table → log panels text → text panels Args:
dashboard_id: The dashboard id to add the panel to.
title: Panel title (1-200 characters).
panel_type: One of: line, bar, stat, gauge, logs, log_table, text.
Defaults to "line".
unit: Display unit string (e.g. "none", "bytes", "percent",
"bits/s"). Defaults to "none".
legend_label: Legend label for metric queries. Ignored for log
panels (use |
| delete_panelA | Delete a panel from a dashboard. This cannot be undone. Args: dashboard_id: The dashboard id that owns the panel. panel_id: The panel id to delete. |
| list_projectsA | List all projects in the tenant (id, key, name, classification). |
| get_projectA | Get a single project's full details. Args:
project_id: The project id (NOT the key — use |
| create_projectA | Create a new project. Args: name: Display name (1-200 chars), e.g. "Platform Reliability". key: Short uppercase key used in ticket display ids (2-10 chars, A-Z + 0-9 only), e.g. "PLAT". Becomes part of the ticket display id like "PLAT-123". description: Optional human-readable description. classification: One of: "software", "operations", "security", "infrastructure", "data", "other". Defaults to "other". owner_user_id: Optional user id of the project owner. |
| list_project_membersA | List the members of a project (id, user id, role). Use this to find user ids you can later pass as Args: project_id: The project id. |
| list_project_issue_typesA | List the issue types defined in a project (id, name, parent_type_id). Required before calling Args: project_id: The project id. |
| list_runbooksA | List all runbooks in the tenant with their lifecycle status and cell count. |
| get_runbookA | Get a runbook with all its cells. Returns name, status, and each cell's type/target/content preview. Args: runbook_id: The runbook id to fetch. |
| create_runbookA | Create a new runbook in draft status. Returns the runbook id. Args: name: Short, descriptive name (e.g. "Restart failing pods in production"). description: Markdown description of what this runbook does and when to use it. tags: Optional list of tags for categorisation (e.g. ["k8s", "incident"]). |
| add_cellA | Add a cell to a runbook. Args: runbook_id: The runbook to add the cell to. cell_type: One of: 'markdown' (documentation), 'shell' (bash script), 'http' (HTTP request). content: The cell content — markdown text, bash script, or HTTP request body. order: Position in the notebook (0-indexed). Cells execute in ascending order. target_type: Execution target — 'k8s', 'ecs', or 'ec2'. Null for markdown cells. target_config: JSON string with target config: k8s: {"namespace": "production", "pod_selector": "app=api"} ecs: {"cluster_arn": "arn:aws:ecs:...", "task_definition": "my-task:5"} ec2: {"instance_id": "i-0abc123def456"} |
| update_cellA | Update cell content or execution target. Only provided fields change. Args: runbook_id: The parent runbook id. cell_id: The cell id to update. content: New cell content (leave None to keep current). target_type: New target type — 'k8s', 'ecs', 'ec2', or None. target_config: JSON string with new target config, or None to keep current. |
| delete_cellA | Remove a cell from a runbook. Args: runbook_id: The parent runbook id. cell_id: The cell id to delete. |
| reorder_cellsA | Set the execution order of cells. Provide all cell ids in the desired sequence. Args: runbook_id: The runbook to reorder. cell_ids: All cell ids in the desired order, e.g. ["c3", "c1", "c2"]. |
| promote_runbookA | Advance the runbook lifecycle: draft -> reviewed -> standard. Call this when authoring is finished and the runbook is ready for engineer review (draft->reviewed), or when an engineer has approved it as a Standard Operating Procedure (reviewed->standard). Args: runbook_id: The runbook to promote. |
| deprecate_runbookA | Mark a runbook as deprecated. Use when a procedure is no longer safe or relevant. Args: runbook_id: The runbook to deprecate. |
| list_servicesA | List all services in the tenant catalog (id, name, slug). |
| create_serviceA | Create a service in the catalog. Args: name: Display name, e.g. "Payments API". kind: One of service|library|worker|job|frontend|mobile_app|other. language: Primary language, e.g. "python". scm_provider_id: ID of the SCM provider (GitHub, GitLab, etc.) integration. repository_url: Full URL to the source repository. slug: URL-safe id; server generates one from name if omitted. language_version: Language runtime version, e.g. "3.12". default_branch: Default VCS branch (default "main"). description: Optional human-readable description. lifecycle: One of active|deprecated|archived (default "active"). owner_group_id: Optional owning group id. tier: Optional criticality tier — tier1|tier2|tier3. runtime: Optional runtime identifier, e.g. "docker". tags: Optional list of tag strings. links: Optional list of link dicts (e.g. [{"label": "Docs", "url": "..."}]). |
| update_serviceA | Update a service. Only provided fields change. Args: service_id: The service id to update. name: New display name. description: New description. kind: New kind — service|library|worker|job|frontend|mobile_app|other. language: New primary language. language_version: New language version. scm_provider_id: New SCM provider integration id. repository_url: New repository URL. default_branch: New default branch. lifecycle: New lifecycle — active|deprecated|archived. owner_group_id: Move ownership to a different group. clear_owner: Set True to remove the owner assignment. tier: New criticality tier — tier1|tier2|tier3. clear_tier: Set True to remove the tier assignment. runtime: New runtime identifier. tags: Replace the tags list entirely. links: Replace the links list entirely. add_environments: List of environment ids to associate with the service. remove_environments: List of environment ids to disassociate from the service. |
| delete_serviceB | Delete a service from the catalog by id. This cannot be undone. Args: service_id: The service id to delete. |
| list_ticketsA | List tickets across the tenant with optional filters. Filters compose with AND. All are optional; with no filters, returns the
most recent tickets up to Args: service_id: Filter by primary_service_id. assignee_user_id: Filter by assignee. status: One of open / in_progress / done / cancelled. priority: One of low / medium / high / urgent. ticket_type: One of epic / story / task / subtask / bug. parent_ticket_id: Only direct children of this parent. tag: Filter by a single tag. q: Full-text search across title/description. include_affected: When True with service_id, also include tickets where the service appears in affected_services. limit: Max rows (1-200, default 50). |
| get_ticketA | Get a single ticket's full details + activity counts. Args:
ticket_id: The internal ticket id (NOT the display id like KEY-NNN —
use |
| create_ticketA | Create a SERVICE-LEVEL ticket (not bound to a project). Use this when the user explicitly wants a service-scoped ticket. For
tickets that should live in a project, use Args: title: Short summary (1-200 chars). ticket_type: One of epic / story / task / subtask / bug. Default task. description: Optional longer body (markdown). priority: One of low / medium / high / urgent. Default medium. severity: One of minor / major / critical, or None. primary_service_id: Service the ticket is primarily about. parent_ticket_id: Parent ticket id (for subtasks under a story, etc.). assignee_user_id: User id to assign to. start_date: ISO 8601 date string "YYYY-MM-DD". due_date: ISO 8601 date string "YYYY-MM-DD". tags: Optional list of tag strings. affected_service_ids: List of additional service ids affected. |
| update_ticketA | Update a service-level ticket (PATCH semantics — only provided fields change). Use this for status transitions, reassignment, priority bumps, etc. Args: ticket_id: The internal ticket id (NOT the display id). title: New title (1-200 chars). description: New description. status: New status — open / in_progress / done / cancelled. priority: New priority — low / medium / high / urgent. severity: New severity — minor / major / critical or null. assignee_user_id: New assignee user id (pass empty string to unassign? Use null). start_date: ISO date "YYYY-MM-DD". due_date: ISO date "YYYY-MM-DD". tags: New full list of tags (replaces existing). parent_ticket_id: New parent ticket id. |
| comment_on_ticketA | Add a comment to a ticket. Args: ticket_id: The internal ticket id. body: The comment body (markdown supported, min 1 char). |
| link_ticketsA | Create a relationship between two tickets. Args: ticket_id: The ticket that the link originates from. target_ticket_id: The ticket on the other end of the link. link_type: One of blocks / relates_to / duplicates. Default relates_to. |
| list_project_ticketsA | List tickets in a project (display id, status, priority, title, assignee). Args:
project_id: The project id (use |
| get_project_ticketA | Get a project ticket by its per-project sequence number. The display id "KEY-NNN" means: project with that KEY, ticket number NNN. For example "PLAT-42" -> project_id of "PLAT", number=42. Args:
project_id: The project id (NOT the project key — use |
| create_project_ticketA | Create a ticket within a project. Returns a display id like "KEY-NNN". This is the recommended path for most ticket creation — project tickets
get an auto-incremented per-project number and a human-friendly display
id. Prerequisites: you need the Args:
project_id: The project id to create the ticket in.
issue_type_id: A valid issue type id for this project. Use
|
Prompts
Interactive templates invoked by user choice
| Name | Description |
|---|---|
No prompts | |
Resources
Contextual data attached and managed by the client
| Name | Description |
|---|---|
No resources | |
TDQS
Scored across 60 tools
Most tools are clearly separated by resource and action, and the athena_*/db_* prefixes help partition query tools. The main ambiguity comes from dual ticket paths (create_ticket vs create_project_ticket, get_ticket vs get_project_ticket, list_tickets vs list_project_tickets), but the descriptions are explicit about which to use.
The dominant pattern is verb_noun (list_dashboards, create_environment, update_service), but several tools put the domain first (athena_run_query, db_query, athena_cancel) or use 'athena_history' without a verb. Add_panel/add_cell also deviate from the create_* convention, making the set readable but inconsistent.
60 tools is an extreme count for a single MCP server and bundles many unrelated domains—dashboards, Athena, SQL, AWS resources, projects, tickets, runbooks, and services. Even if each tool is individually useful, the combined surface is too heavy for an agent to navigate efficiently.
Several domains have solid CRUD coverage, especially tickets, services, dashboards, and runbook cells, but there are notable gaps: no panel update, no runbook update/delete, no project update/delete, no environment group update/delete, and no API to discover datasource_id (needed by add_panel). There is also no user lookup tool, which would help resolve assignee_user_id.