Skip to main content
Glama
christianclaudio

mcp-server-smartsheet-rm

Server Configuration

Describes the environment variables required to run the server.

NameRequiredDescriptionDefault
SMARTSHEET_RM_PROFILENoTool profile subset: time, projects, admin, fullfull
SMARTSHEET_RM_BASE_URLNoBase API URLhttps://api.rm.smartsheet.com/api/v1
SMARTSHEET_RM_READONLYNoSet to 1 to restrict server to read-only tools0
SMARTSHEET_RM_API_TOKENYesSmartsheet RM (10,000ft) API Token (Required)
SMARTSHEET_RM_LOG_FORMATNoSet to json for Datadog/CloudWatch structured logstext
SMARTSHEET_RM_ALLOW_BULK_DESTRUCTIVENoSet to 1 to unlock bulk delete operations0

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

CapabilityDetails
tools
{
  "listChanged": true
}
logging
{}
prompts
{
  "listChanged": true
}
resources
{
  "subscribe": false,
  "listChanged": true
}

Tools

Functions exposed to the LLM to take actions

NameDescription
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: POST /time_entries is not in Smartsheet's Resource Management API reference or the archived 10,000ft API docs, so Smartsheet may change or remove it without notice. Documented routes: POST /users/{user_id}/time_entries (time_create_user_time_entry) and POST /projects/{project_id}/time_entries (time_create_project_time_entry).

time_create_user_time_entryA

Create a time entry for a user on the documented route POST /users/{user_id}/time_entries.

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 POST /projects/{project_id}/time_entries.

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: PUT /time_entries/{id} is not in Smartsheet's Resource Management API reference or the archived 10,000ft API docs, so Smartsheet may change or remove it without notice. Documented route: PUT /users/{user_id}/time_entries/{id}.

time_delete_time_entryA

Delete a time entry (Destructive: requires confirm=True).

Undocumented route: DELETE /time_entries/{id} is not in Smartsheet's Resource Management API reference or the archived 10,000ft API docs, so Smartsheet may change or remove it without notice. Documented route: DELETE /users/{user_id}/time_entries/{id}.

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: PUT /users/{user_id}/time_entries/approval_status is not in Smartsheet's Resource Management API reference or the archived 10,000ft API docs, so Smartsheet may change or remove it without notice. No documented equivalent was found.

time_lock_timesheetA

Lock or unlock timesheet records for a user up to a specified lock date (YYYY-MM-DD).

Undocumented route: POST /users/{user_id}/time_entries/lock is not in Smartsheet's Resource Management API reference or the archived 10,000ft API docs, so Smartsheet may change or remove it without notice. No documented equivalent was found.

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: POST /time_entries is not in Smartsheet's Resource Management API reference or the archived 10,000ft API docs, so Smartsheet may change or remove it without notice. Each entry is created there. Documented route: POST /users/{user_id}/time_entries.

time_confirm_suggested_hoursB

Auto-confirm all unconfirmed scheduled suggestions for a user within a date range.

Undocumented route: PUT /time_entries/{id} is not in Smartsheet's Resource Management API reference or the archived 10,000ft API docs, so Smartsheet may change or remove it without notice. Each suggestion is confirmed there. Documented route: PUT /users/{user_id}/time_entries/{id}.

time_reconcile_and_submit_weekA

Audit weekly logged hours against a target (40h) and optionally submit/approve timesheet.

Undocumented route: PUT /users/{user_id}/time_entries/approval_status is not in Smartsheet's Resource Management API reference or the archived 10,000ft API docs, so Smartsheet may change or remove it without notice. Only auto_submit=True calls it. No documented equivalent was found.

time_bulk_delete_time_entriesA

Bulk delete multiple time entries (Destructive: gated by SMARTSHEET_RM_ALLOW_BULK_DESTRUCTIVE=1 and confirm=True).

Undocumented route: DELETE /time_entries/{id} is not in Smartsheet's Resource Management API reference or the archived 10,000ft API docs, so Smartsheet may change or remove it without notice. Documented route: DELETE /users/{user_id}/time_entries/{id}.

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: GET /projects/{project_id}/phases/{phase_id} is not in Smartsheet's Resource Management API reference or the archived 10,000ft API docs, so Smartsheet may change or remove it without notice. The reference documents only PUT and DELETE on that path; GET /projects/{project_id}/phases lists phases.

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 POST /projects/{project_id}/assignments (dates: YYYY-MM-DD).

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 fixed in its description and fixed_hours in its schema. Percent mode is the default and requires percent; hours_per_day and the fixed mode require hours_per_day and fixed_hours. Without the matching value the call is refused before any request.

projects_create_user_assignmentA

Assign a user to a project, phase or leave type on the documented route POST /users/{user_id}/assignments (dates: YYYY-MM-DD).

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 fixed in its description and fixed_hours in its schema. Percent mode is the default and requires percent; hours_per_day and the fixed mode require hours_per_day and fixed_hours. Without the matching value the call is refused before any request.

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: GET /users/{user_id}/bill_rates is not in Smartsheet's Resource Management API reference or the archived 10,000ft API docs, so Smartsheet may change or remove it without notice. Documented routes: GET /bill_rates and GET /projects/{project_id}/bill_rates.

admin_create_user_bill_rateB

Add a bill rate tier with an effective date range for a user.

Undocumented route: POST /users/{user_id}/bill_rates is not in Smartsheet's Resource Management API reference or the archived 10,000ft API docs, so Smartsheet may change or remove it without notice. The reference documents bill rates only under /bill_rates and /projects/{project_id}/bill_rates, with no create.

admin_get_user_availabilityB

Query scheduled hours vs available capacity for a user.

Undocumented route: GET /users/{user_id}/availability is not in Smartsheet's Resource Management API reference or the archived 10,000ft API docs, so Smartsheet may change or remove it without notice. Documented route: GET /users/{user_id}/availabilities.

admin_get_user_utilizationB

Get billable utilization metrics for a user.

Undocumented route: GET /users/{user_id}/utilization is not in Smartsheet's Resource Management API reference or the archived 10,000ft API docs, so Smartsheet may change or remove it without notice. No documented equivalent was found.

admin_list_rolesB

List all configured user roles.

admin_create_roleB

Create a new role.

Undocumented route: POST /roles is not in Smartsheet's Resource Management API reference or the archived 10,000ft API docs, so Smartsheet may change or remove it without notice. The reference documents only GET for roles.

admin_update_roleB

Update an existing role.

Undocumented route: PUT /roles/{id} is not in Smartsheet's Resource Management API reference or the archived 10,000ft API docs, so Smartsheet may change or remove it without notice. The reference documents only GET for roles.

admin_delete_roleA

Delete a role (Destructive: requires confirm=True).

Undocumented route: DELETE /roles/{id} is not in Smartsheet's Resource Management API reference or the archived 10,000ft API docs, so Smartsheet may change or remove it without notice. The reference documents only GET for roles.

admin_list_disciplinesA

List all configured disciplines.

admin_create_disciplineB

Create a new discipline.

Undocumented route: POST /disciplines is not in Smartsheet's Resource Management API reference or the archived 10,000ft API docs, so Smartsheet may change or remove it without notice. The reference documents only GET for disciplines.

admin_update_disciplineB

Update an existing discipline.

Undocumented route: PUT /disciplines/{id} is not in Smartsheet's Resource Management API reference or the archived 10,000ft API docs, so Smartsheet may change or remove it without notice. The reference documents only GET for disciplines.

admin_delete_disciplineA

Delete a discipline (Destructive: requires confirm=True).

Undocumented route: DELETE /disciplines/{id} is not in Smartsheet's Resource Management API reference or the archived 10,000ft API docs, so Smartsheet may change or remove it without notice. The reference documents only GET for disciplines.

admin_list_clientsB

List clients.

Undocumented route: GET /clients is not in Smartsheet's Resource Management API reference or the archived 10,000ft API docs, so Smartsheet may change or remove it without notice. No documented equivalent was found.

admin_get_clientA

Get details for a specific client.

Undocumented route: GET /clients/{id} is not in Smartsheet's Resource Management API reference or the archived 10,000ft API docs, so Smartsheet may change or remove it without notice. No documented equivalent was found.

admin_create_clientA

Create a new client record.

Undocumented route: POST /clients is not in Smartsheet's Resource Management API reference or the archived 10,000ft API docs, so Smartsheet may change or remove it without notice. No documented equivalent was found.

admin_update_clientB

Update a client record.

Undocumented route: PUT /clients/{id} is not in Smartsheet's Resource Management API reference or the archived 10,000ft API docs, so Smartsheet may change or remove it without notice. No documented equivalent was found.

admin_delete_clientA

Delete a client record (Destructive: requires confirm=True).

Undocumented route: DELETE /clients/{id} is not in Smartsheet's Resource Management API reference or the archived 10,000ft API docs, so Smartsheet may change or remove it without notice. No documented equivalent was found.

admin_list_client_contactsA

List contacts associated with a client.

Undocumented route: GET /clients/{id}/contacts is not in Smartsheet's Resource Management API reference or the archived 10,000ft API docs, so Smartsheet may change or remove it without notice. No documented equivalent was found.

admin_create_client_contactB

Add a contact for a client.

Undocumented route: POST /clients/{id}/contacts is not in Smartsheet's Resource Management API reference or the archived 10,000ft API docs, so Smartsheet may change or remove it without notice. No documented equivalent was found.

admin_delete_client_contactA

Delete a client contact (Destructive: requires confirm=True).

Undocumented route: DELETE /clients/{id}/contacts/{contact_id} is not in Smartsheet's Resource Management API reference or the archived 10,000ft API docs, so Smartsheet may change or remove it without notice. No documented equivalent was found.

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: POST /leave_types is not in Smartsheet's Resource Management API reference or the archived 10,000ft API docs, so Smartsheet may change or remove it without notice. The reference documents only GET for leave types.

admin_update_leave_typeA

Update a leave type name.

Undocumented route: PUT /leave_types/{id} is not in Smartsheet's Resource Management API reference or the archived 10,000ft API docs, so Smartsheet may change or remove it without notice. The reference documents only GET for leave types.

admin_delete_leave_typeA

Delete a leave type (Destructive: requires confirm=True).

Undocumented route: DELETE /leave_types/{id} is not in Smartsheet's Resource Management API reference or the archived 10,000ft API docs, so Smartsheet may change or remove it without notice. The reference documents only GET for leave types.

admin_list_holidaysB

List company and regional holidays.

admin_get_holidayB

Get details for a specific holiday.

Undocumented route: GET /holidays/{id} is not in Smartsheet's Resource Management API reference or the archived 10,000ft API docs, so Smartsheet may change or remove it without notice. The reference documents only GET /holidays.

admin_create_holidayB

Create a new company holiday or non-working day.

Undocumented route: POST /holidays is not in Smartsheet's Resource Management API reference or the archived 10,000ft API docs, so Smartsheet may change or remove it without notice. The reference documents only GET /holidays.

admin_update_holidayB

Update a holiday.

Undocumented route: PUT /holidays/{id} is not in Smartsheet's Resource Management API reference or the archived 10,000ft API docs, so Smartsheet may change or remove it without notice. The reference documents only GET /holidays.

admin_delete_holidayA

Delete a holiday (Destructive: requires confirm=True).

Undocumented route: DELETE /holidays/{id} is not in Smartsheet's Resource Management API reference or the archived 10,000ft API docs, so Smartsheet may change or remove it without notice. The reference documents only GET /holidays.

admin_list_expensesB

List logged expenses across projects or filtered by project/user.

Undocumented route: GET /expenses, GET /projects/{project_id}/expenses, GET /users/{user_id}/expenses are not in Smartsheet's Resource Management API reference or the archived 10,000ft API docs, so Smartsheet may change or remove them without notice. Documented routes: GET /users/{user_id}/expense_items and GET /projects/{project_id}/expense_items.

admin_get_expenseB

Get details for a specific logged expense.

Undocumented route: GET /expenses/{id} is not in Smartsheet's Resource Management API reference or the archived 10,000ft API docs, so Smartsheet may change or remove it without notice. Documented routes: GET /users/{user_id}/expense_items/{expense_item_id} and GET /projects/{project_id}/expense_items/{expense_item_id}.

admin_create_expenseB

Log a project expense item.

Undocumented route: POST /expenses is not in Smartsheet's Resource Management API reference or the archived 10,000ft API docs, so Smartsheet may change or remove it without notice. Documented route: POST /users/{user_id}/expense_items.

admin_update_expenseC

Update a logged expense item.

Undocumented route: PUT /expenses/{id} is not in Smartsheet's Resource Management API reference or the archived 10,000ft API docs, so Smartsheet may change or remove it without notice. Documented route: PUT /users/{user_id}/expense_items/{expense_item_id}.

admin_delete_expenseA

Delete an expense item (Destructive: requires confirm=True).

Undocumented route: DELETE /expenses/{id} is not in Smartsheet's Resource Management API reference or the archived 10,000ft API docs, so Smartsheet may change or remove it without notice. Documented route: DELETE /users/{user_id}/expense_items/{expense_item_id}.

admin_list_expense_categoriesA

List configured expense categories.

Undocumented route: GET /expense_categories is not in Smartsheet's Resource Management API reference or the archived 10,000ft API docs, so Smartsheet may change or remove it without notice. Documented route: GET /expense_item_categories.

admin_create_expense_categoryB

Create an expense category.

Undocumented route: POST /expense_categories is not in Smartsheet's Resource Management API reference or the archived 10,000ft API docs, so Smartsheet may change or remove it without notice. The reference documents only GET /expense_item_categories.

admin_delete_expense_categoryA

Delete an expense category (Destructive: requires confirm=True).

Undocumented route: DELETE /expense_categories/{id} is not in Smartsheet's Resource Management API reference or the archived 10,000ft API docs, so Smartsheet may change or remove it without notice. The reference documents only GET /expense_item_categories.

admin_list_tagsC

List tags.

Undocumented route: GET /tags is not in Smartsheet's Resource Management API reference or the archived 10,000ft API docs, so Smartsheet may change or remove it without notice. Documented routes: GET /projects/{project_id}/tags and GET /users/{user_id}/tags.

admin_create_tagB

Create a tag.

Undocumented route: POST /tags is not in Smartsheet's Resource Management API reference or the archived 10,000ft API docs, so Smartsheet may change or remove it without notice. Documented routes: POST /projects/{project_id}/tags and POST /users/{user_id}/tags.

admin_delete_tagA

Delete a tag (Destructive: requires confirm=True).

Undocumented route: DELETE /tags/{id} is not in Smartsheet's Resource Management API reference or the archived 10,000ft API docs, so Smartsheet may change or remove it without notice. Documented routes: DELETE /projects/{project_id}/tags/{tag_id} and DELETE /users/{user_id}/tags/{tag_id}.

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: GET /custom_field_values is not in Smartsheet's Resource Management API reference or the archived 10,000ft API docs, so Smartsheet may change or remove it without notice. Documented routes: GET /projects/{project_id}/custom_field_values and GET /users/{user_id}/custom_field_values.

admin_set_custom_field_valuesB

Set custom field values for an entity.

Undocumented route: PUT /custom_field_values is not in Smartsheet's Resource Management API reference or the archived 10,000ft API docs, so Smartsheet may change or remove it without notice. Documented routes: PUT /projects/{project_id}/custom_field_values/{custom_field_value_id} and PUT /users/{user_id}/custom_field_values/{custom_field_value_id}.

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

NameDescription
time_timesheet_reconciliationAudit and reconcile weekly timesheets against 40-hour capacity target.
projects_project_staffing_planAnalyze resource assignments and phase timelines for a project.

Resources

Contextual data attached and managed by the client

NameDescription
rm_capabilities_resourceResource documentation detailing Smartsheet Resource Management capabilities.
rm_quickstart_resourceQuickstart guide for Smartsheet Resource Management MCP operations.

TDQS

C2.5/5.0

Scored across 104 tools

Disambiguation2/5

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.

Naming Consistency4/5

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.

Tool Count1/5

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.

Completeness4/5

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.

Maintenance

ActivityActive
ResponsivenessResponsive