mcp-server-smartsheet-rm
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
| SMARTSHEET_RM_PROFILE | No | Tool profile subset: time, projects, admin, full | full |
| SMARTSHEET_RM_BASE_URL | No | Base API URL | https://api.rm.smartsheet.com/api/v1 |
| SMARTSHEET_RM_READONLY | No | Set to 1 to restrict server to read-only tools | 0 |
| SMARTSHEET_RM_API_TOKEN | Yes | Smartsheet RM (10,000ft) API Token (Required) | |
| SMARTSHEET_RM_LOG_FORMAT | No | Set to json for Datadog/CloudWatch structured logs | text |
| SMARTSHEET_RM_ALLOW_BULK_DESTRUCTIVE | No | Set to 1 to unlock bulk delete operations | 0 |
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": true
} |
| logging | {} |
| prompts | {
"listChanged": true
} |
| resources | {
"subscribe": false,
"listChanged": true
} |
Tools
Functions exposed to the LLM to take actions
| Name | Description |
|---|---|
| time_list_time_entriesB | List time entries across organization or filtered by project, user, or date range (YYYY-MM-DD). |
| time_get_time_entryB | Get details for a specific time entry by its ID. |
| time_create_time_entryA | Create a new time entry for a user on a project (date format: YYYY-MM-DD). Undocumented route: |
| time_create_user_time_entryA | Create a time entry for a user on the documented route assignable_id is the project, phase or leave type ID; date is YYYY-MM-DD. task, notes and bill_rate_id are optional; the reference limits task and notes to 256 characters. The body repeats user_id, which the reference says must match the URL. |
| time_create_project_time_entryA | Create a time entry on a project on the documented route date is YYYY-MM-DD. The body's assignable_id is project_id, which the reference says must match the URL; to log time to a phase or leave type, use time_create_user_time_entry. task, notes and bill_rate_id are optional; the reference limits task and notes to 256 characters. |
| time_update_time_entryC | Update an existing time entry. Undocumented route: |
| time_delete_time_entryA | Delete a time entry (Destructive: requires confirm=True). Undocumented route: |
| time_list_user_suggestionsB | Read unconfirmed scheduled time suggestions for a user. |
| time_update_time_approval_statusB | Approve or reject time entries for a user (status: 'approved', 'rejected', 'pending'). Undocumented route: |
| time_lock_timesheetA | Lock or unlock timesheet records for a user up to a specified lock date (YYYY-MM-DD). Undocumented route: |
| time_fill_weekly_timesheetA | Batch-fill weekly timesheet entries (Mon-Fri 8h default, or 7-day with include_weekends=True) for a user. start_date: Monday date of the week in YYYY-MM-DD. include_weekends: When True, logs Saturday and Sunday entries as well. weekend_hours: Specific hours for Saturday/Sunday (defaults to daily_hours if omitted). Undocumented route: |
| time_confirm_suggested_hoursB | Auto-confirm all unconfirmed scheduled suggestions for a user within a date range. Undocumented route: |
| time_reconcile_and_submit_weekA | Audit weekly logged hours against a target (40h) and optionally submit/approve timesheet. Undocumented route: |
| time_bulk_delete_time_entriesA | Bulk delete multiple time entries (Destructive: gated by SMARTSHEET_RM_ALLOW_BULK_DESTRUCTIVE=1 and confirm=True). Undocumented route: |
| time_list_approvalsB | List submitted time entry and expense approvals across the organization. |
| time_create_approvalC | Submit or approve approvable records (approvable_type: 'time_entries' or 'expense_items'). |
| time_delete_approvalA | Delete a pending approval record (Destructive: requires confirm=True). |
| projects_list_projectsC | List projects in Smartsheet RM with filtering, phase inclusion, and pagination. |
| projects_get_projectB | Get project details including budget, phases, client, and dates. |
| projects_create_projectC | Create a new project in Smartsheet RM. |
| projects_update_projectC | Update project metadata, state, dates, budget or archive status. |
| projects_delete_projectA | Delete a project (Destructive: requires confirm=True). |
| projects_list_project_usersB | List users associated with or assigned to a specific project. |
| projects_list_project_phasesC | List phases belonging to a project. |
| projects_get_project_phaseA | Get details for a specific project phase. Undocumented route: |
| projects_create_project_phaseC | Create a new phase under a project. |
| projects_update_project_phaseC | Update an existing project phase. |
| projects_delete_project_phaseA | Delete a project phase (Destructive: requires confirm=True). |
| projects_list_assignmentsC | List resource scheduling assignments across projects or filtered by user/project. |
| projects_get_assignmentC | Get details for a specific assignment. |
| projects_create_assignmentC | Create a resource assignment on a project or phase (dates: YYYY-MM-DD). |
| projects_create_project_assignmentB | Assign a user to a project on the documented route Set allocation_mode and the matching value: percent (the reference documents it as a fraction from
0 to 1), hours_per_day, or fixed_hours for the fixed mode. allocation_mode is sent as given, because
the reference names the fixed mode |
| projects_create_user_assignmentA | Assign a user to a project, phase or leave type on the documented route assignable_id is the project, phase or leave type ID. Set allocation_mode and the matching value:
percent (the reference documents it as a fraction from 0 to 1), hours_per_day, or fixed_hours for the
fixed mode. allocation_mode is sent as given, because the reference names the fixed mode |
| projects_update_assignmentC | Update dates, allocation percentage, or hours on an existing assignment. |
| projects_delete_assignmentA | Delete a resource assignment (Destructive: requires confirm=True). |
| projects_clone_project_scheduleB | Duplicate project budget settings, timeline, and phase milestone structure to a new project. |
| projects_bulk_delete_assignmentsA | Bulk delete multiple resource assignments (Destructive: gated by SMARTSHEET_RM_ALLOW_BULK_DESTRUCTIVE=1 and confirm=True). |
| projects_list_status_optionsA | List account-level assignment work status options. |
| projects_list_placeholder_resourcesC | List placeholder resources used for forecasting and capacity modeling. |
| projects_create_placeholder_resourceD | Create a placeholder resource. |
| projects_delete_placeholder_resourceB | Delete a placeholder resource (Destructive: requires confirm=True). |
| projects_list_assignment_subtasksB | List subtasks (checklist tasks) for a project assignment. |
| projects_create_assignment_subtaskC | Create a subtask under a project assignment. |
| projects_delete_assignment_subtaskB | Delete an assignment subtask (Destructive: requires confirm=True). |
| admin_list_usersB | List users in the organization with role/discipline filtering. |
| admin_get_userC | Get details for a specific user. |
| admin_create_userC | Create a new user profile in Smartsheet RM. |
| admin_update_userC | Update a user's profile, role, discipline, bill rate, or archive state. |
| admin_delete_userB | Delete or archive a user (Destructive: requires confirm=True). |
| admin_list_user_bill_ratesA | List bill rate tiers for a user. Undocumented route: |
| admin_create_user_bill_rateB | Add a bill rate tier with an effective date range for a user. Undocumented route: |
| admin_get_user_availabilityB | Query scheduled hours vs available capacity for a user. Undocumented route: |
| admin_get_user_utilizationB | Get billable utilization metrics for a user. Undocumented route: |
| admin_list_rolesB | List all configured user roles. |
| admin_create_roleB | Create a new role. Undocumented route: |
| admin_update_roleB | Update an existing role. Undocumented route: |
| admin_delete_roleA | Delete a role (Destructive: requires confirm=True). Undocumented route: |
| admin_list_disciplinesA | List all configured disciplines. |
| admin_create_disciplineB | Create a new discipline. Undocumented route: |
| admin_update_disciplineB | Update an existing discipline. Undocumented route: |
| admin_delete_disciplineA | Delete a discipline (Destructive: requires confirm=True). Undocumented route: |
| admin_list_clientsB | List clients. Undocumented route: |
| admin_get_clientA | Get details for a specific client. Undocumented route: |
| admin_create_clientA | Create a new client record. Undocumented route: |
| admin_update_clientB | Update a client record. Undocumented route: |
| admin_delete_clientA | Delete a client record (Destructive: requires confirm=True). Undocumented route: |
| admin_list_client_contactsA | List contacts associated with a client. Undocumented route: |
| admin_create_client_contactB | Add a contact for a client. Undocumented route: |
| admin_delete_client_contactA | Delete a client contact (Destructive: requires confirm=True). Undocumented route: |
| admin_list_leave_typesA | List leave types (e.g. Vacation, Sick, Parental, PTO). |
| admin_get_leave_typeC | Get details for a specific leave type. |
| admin_create_leave_typeB | Create a new leave type. Undocumented route: |
| admin_update_leave_typeA | Update a leave type name. Undocumented route: |
| admin_delete_leave_typeA | Delete a leave type (Destructive: requires confirm=True). Undocumented route: |
| admin_list_holidaysB | List company and regional holidays. |
| admin_get_holidayB | Get details for a specific holiday. Undocumented route: |
| admin_create_holidayB | Create a new company holiday or non-working day. Undocumented route: |
| admin_update_holidayB | Update a holiday. Undocumented route: |
| admin_delete_holidayA | Delete a holiday (Destructive: requires confirm=True). Undocumented route: |
| admin_list_expensesB | List logged expenses across projects or filtered by project/user. Undocumented route: |
| admin_get_expenseB | Get details for a specific logged expense. Undocumented route: |
| admin_create_expenseB | Log a project expense item. Undocumented route: |
| admin_update_expenseC | Update a logged expense item. Undocumented route: |
| admin_delete_expenseA | Delete an expense item (Destructive: requires confirm=True). Undocumented route: |
| admin_list_expense_categoriesA | List configured expense categories. Undocumented route: |
| admin_create_expense_categoryB | Create an expense category. Undocumented route: |
| admin_delete_expense_categoryA | Delete an expense category (Destructive: requires confirm=True). Undocumented route: |
| admin_list_tagsC | List tags. Undocumented route: |
| admin_create_tagB | Create a tag. Undocumented route: |
| admin_delete_tagA | Delete a tag (Destructive: requires confirm=True). Undocumented route: |
| admin_list_custom_fieldsB | List custom field definitions. |
| admin_get_custom_fieldC | Get details of a custom field definition. |
| admin_create_custom_fieldA | Create a custom field definition (field_type: text, number, select, date; target_type: Project, User, Phase). |
| admin_update_custom_fieldC | Update a custom field definition. |
| admin_delete_custom_fieldA | Delete a custom field definition (Destructive: requires confirm=True). |
| admin_list_custom_field_valuesA | List custom field values, optionally filtered to one entity by target_id and target_type. Undocumented route: |
| admin_set_custom_field_valuesB | Set custom field values for an entity. Undocumented route: |
| admin_get_user_statusesB | Retrieve work status history for a specific user (ITO, WFH, SIC, OOO, VAC, OOF). |
| admin_set_user_statusB | Set current working status for a user (status: 'ITO', 'WFH', 'SIC', 'OOO', 'VAC', 'OOF'). |
| admin_get_report_rowsC | Generate detailed custom report rows. |
| admin_get_report_totalsC | Generate aggregated custom report totals. |
| admin_list_webhooksB | List configured organization webhooks. |
| admin_create_webhookC | Register a webhook subscription (e.g. 'time.entry.created', 'project.updated', 'assignment.created'). |
| admin_delete_webhookA | Delete a webhook subscription (Destructive: requires confirm=True). |
Prompts
Interactive templates invoked by user choice
| Name | Description |
|---|---|
| time_timesheet_reconciliation | Audit and reconcile weekly timesheets against 40-hour capacity target. |
| projects_project_staffing_plan | Analyze resource assignments and phase timelines for a project. |
Resources
Contextual data attached and managed by the client
| Name | Description |
|---|---|
| rm_capabilities_resource | Resource documentation detailing Smartsheet Resource Management capabilities. |
| rm_quickstart_resource | Quickstart guide for Smartsheet Resource Management MCP operations. |
TDQS
Scored across 104 tools
Multiple tool clusters have unclear boundaries: time_create_time_entry, time_create_user_time_entry, and time_create_project_time_entry all appear to log time, and projects_create_assignment, projects_create_project_assignment, and projects_create_user_assignment are three near-identical creation paths. Similarly projects_get_project_phase vs projects_list_project_phases is fine, but admin_list_expenses/admin_get_expense vs time_list_approvals/time_create_approval blur the reporting vs approval boundary. An agent would frequently need to read long caveat text to pick correctly, which is a symptom of overlap rather than distinct purpose.
Nearly all names follow a predictable prefix_verb_noun convention (time_*, projects_*, admin_*) making the domain grouping obvious. A few workflow-style names like time_reconcile_and_submit_week or projects_clone_project_schedule deviate from the strict verb_noun shape, but the overall pattern is stable and readable.
104 tools is an extreme surface for a single MCP server, far beyond what an agent can scan or select from reliably. Much of the volume comes from parallel CRUD variants and undocumented-route shims rather than distinct capabilities.
Coverage is broad: CRUD for projects, phases, assignments, users, roles, disciplines, clients, contacts, leave types, holidays, expenses, categories, tags, custom fields, webhooks, plus time entry workflows and reports. Minor gaps exist (no update_holiday counterpart for some entities is present, but tags and expense categories lack update operations, and reports are read-only), though core lifecycle operations are well represented.