Skip to main content
Glama
woof-xyz

workiva-mcp

by woof-xyz

Server Configuration

Describes the environment variables required to run the server.

NameRequiredDescriptionDefault
WORKIVA_PROFILENoProfile name to use from the credentials file (default profile chosen by precedence).
WORKIVA_CLIENT_IDNoClient ID for the Workiva API (used if no credentials file).
WORKIVA_KB_DRAFTSNoDirectory for storing KB drafts (default: ~/.workiva/kb/drafts/).
WORKIVA_ALLOW_WRITESNoSet to '1' to enable write operations (default: read-only).
WORKIVA_CLIENT_SECRETNoClient Secret for the Workiva API (used if no credentials file).
WORKIVA_CREDENTIALS_FILENoPath to the credentials file (default: ~/.workiva/credentials).

Capabilities

Features and capabilities supported by this server

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

Tools

Functions exposed to the LLM to take actions

NameDescription
kb_searchA

Search accumulated Workiva API knowledge BEFORE attempting unfamiliar work, and whenever a call fails unexpectedly.

Pass the literal error text if you have one — entries are indexed on symptom strings. Otherwise pass the task ("create incoming connection", "write to spreadsheet"). Answers: is this possible via the API at all, what is the real endpoint, what will fail first.

kb_listA

List KB entries, optionally filtered by surface (wdata, platform, graph, spreadsheets, chains, auth) or severity (blocker, gotcha, nuance).

Reading all blocker entries before planning Workiva work is cheap and prevents committing to approaches that have no API path.

kb_getA

Retrieve one KB entry in full, including its evidence.

kb_addA

Record a newly discovered Workiva quirk so nobody researches it twice.

Add an entry whenever you lost more than a few minutes to something not obvious from the docs — especially "there is no API for this".

entry_id stable kebab-case slug, e.g. wdata-upload-requires-zip severity blocker (no API path) | gotcha (obvious approach fails) | nuance symptom pipe-separated literal error strings — the primary search key; required for blockers and gotchas tags comma-separated api_version pass the dated X-Version you ran against, if known

The draft lands in ~/.workiva/kb/drafts/ — local to this machine, searchable immediately. A human later promotes it into the shared KB by PR.

wdata_list_tablesA

List Wdata tables: id, name, databaseId, lastUploaded — and sql_ref, the exact qualified reference SQL requires.

Wdata SQL cannot reference tables by name (KB: wdata-sql-requires-qualified-table-refs). Copy sql_ref verbatim into your query: SELECT ... FROM AS "alias". The databaseId doubles as the workspace id in Spreadsheets UI URLs.

wdata_get_tableB

Full detail for one Wdata table, including its column schema.

wdata_list_queriesA

List saved Wdata queries with id, name and updated timestamp.

wdata_run_sqlA

Execute one-off Wdata SQL and return rows.

Tables MUST be referenced by the sql_ref from wdata_list_tables — "databaseId"."tableId" AS "alias" — plain names do not resolve. The dialect is Trino. Mechanics: there is no ad-hoc SQL endpoint, so this creates a temporary saved query, runs it, downloads the CSV result, then deletes the temporary query.

wdata_run_saved_queryB

Execute a saved Wdata query by id (see wdata_list_queries) and return its rows.

wdata_list_connectionsA

List Wdata connections (live query -> spreadsheet links).

A filter pair is REQUIRED — either (source_type, source_id) or (destination_type, destination_id), e.g. source_type "wdata_query" with a query id. Connections cannot be CREATED via the API (KB: connections-cannot-be-created-via-api) — only listed and refreshed.

wdata_create_tableA

WRITE. Create a Wdata table.

columns_json: JSON array of {"name": ..., "type": ...} column dicts — valid types are catalogued in the KB (kb_get wdata-column-types).

wdata_upload_and_importA

WRITE. Upload a local .csv/.tsv/.json (or .zip of one) into a Wdata table and import it: upload -> import -> poll until settled, in one call (upload alone does NOT import — KB: wdata-upload-then-import-two-steps).

Row-level import errors are surfaced if the import fails. Note the import adds system columns to the table, and re-uploading an identical filename 409s (KB: wdata-duplicate-filename-409).

wdata_refresh_connectionA

WRITE. Refresh an existing connection and wait for it to settle — this updates the destination spreadsheet's data in place.

Find connection ids with wdata_list_connections. Connections can only be refreshed, never created, via the API.

graph_typesA

List all graph record type names available in this workspace.

graph_recordsA

Fetch graph records of one type (find names via graph_types).

A type filter is mandatory — the API rejects an unfiltered listing (KB: graph-records-filter-required). Set expand_relationships to walk the record's edges.

graph_editsA

WRITE. Apply graph edits: a JSON array of operations — create_record, create_relationship, set_properties, delete_relationship, delete_record. Records are created via edits; there is no POST /graph/records (KB: graph-records-created-via-edits).

WARNING: if the response carries no temp-id map, do NOT retry — the records were likely created anyway. Read back with graph_records and reconcile (KB: graph-edits-id-map-unreliable).

spreadsheet_list_sheetsB

List sheets in a spreadsheet, including any bound dataset.

spreadsheet_updateA

WRITE. Write to a sheet. operations_json is one of editRange, editCells, applyFormats or resizeColumns; all indices 0-based and inclusive.

Send numbers as JSON numbers, not strings, or CURRENCY/PERCENT formats will not apply (KB: spreadsheet-write-operations). Waits for the async operation to complete.

spreadsheet_ui_urlA

Build the Spreadsheets UI URL for a spreadsheet or sheet.

No API returns this URL, but the query-result export endpoint and human users both need it; it is constructed from the workspace id (KB: spreadsheet-ui-url-format). Defaults to the first sheet.

workiva_requestA

Escape hatch for any endpoint not wrapped by a dedicated tool (tags, parameters, pivot views, folders, file downloads, admin, ...).

surface — which host the path is relative to (KB: three-distinct-api-hosts): platform https://api.app.wdesk.com (X-Version added for you) wdata https://h.app.wdesk.com/s/wdata/prep/api/v1 chains https://h.app.wdesk.com/s/wdata/oc/api/v1

body_json / params_json are JSON strings. GET is always allowed; any other method counts as a WRITE here and requires writes enabled (read-style POSTs like query execution have dedicated tools that stay available). If a call fails in a way no KB entry explains, that is new knowledge — record it with kb_add.

Prompts

Interactive templates invoked by user choice

NameDescription

No prompts

Resources

Contextual data attached and managed by the client

NameDescription

No resources

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/woof-xyz/workiva-mcp'

If you have feedback or need assistance with the MCP directory API, please join our Discord server