Skip to content
Back to skills

Query Workspace

ASecurity

Query MosoFin workspace business data (accounting platforms and other connected SaaS). Use when the user asks for P&L, invoices, cash, customers, or any live books data, or mentions MosoFin, a client workspace, or reconnecting a data source.

  • 2 stars
  • 0 votes
  • 0 copies
  • 1 view
  • Added October 6, 2026
ai-agentsapi

Works with

  • claude code
  • cli
  • api
  • mcp

Security analysis

A100/100

Scanned October 6, 2026

npx -y skills add MosoFin/mosofin-mcp-plugin --skill query-workspace --agent claude-code

Installs into .claude/skills of the current project.

Are you the author of Query Workspace?

Add the live security badge to your README. It updates with every re-scan.

Security grade badge for Query Workspace
[![Security: A — Skills Directory](https://www.skillsdirectory.com/api/skills/mosofin-query-workspace/badge)](https://www.skillsdirectory.com/skills/mosofin-query-workspace)

More formats (shields.io, HTML) on the badges page. Keep it an A: scan every change in CI with Pro.

Download with Pro
SKILL.md
---
name: query-workspace
description: Query MosoFin workspace business data (accounting platforms and other connected SaaS). Use when the user asks for P&L, invoices, cash, customers, or any live books data, or mentions MosoFin, a client workspace, or reconnecting a data source.
allowed-tools:
  - mcp__plugin_mosofin_mosofin__list_workspaces
  - mcp__plugin_mosofin_mosofin__get_agent_datasources
  - mcp__plugin_mosofin_mosofin__get_datasource_tools
  - mcp__plugin_mosofin_mosofin__invoke_datasource_api_tool
  - mcp__plugin_mosofin_local__list_workspaces
  - mcp__plugin_mosofin_local__get_agent_datasources
  - mcp__plugin_mosofin_local__get_datasource_tools
  - mcp__plugin_mosofin_local__invoke_datasource_api_tool
---

# Query a MosoFin workspace

Read-only path for any MosoFin data question. Call only the MCP tools listed
in frontmatter. Full per-tool spec (inputs, outputs, examples, errors):
`docs/mcp-tool-spec.md`. Short contract: `docs/plugin-contract.md`.

Host-namespaced tool ids (Claude Code / Grok Build; plugin `mosofin`, server `mosofin`):

- `mcp__plugin_mosofin_mosofin__list_workspaces`
- `mcp__plugin_mosofin_mosofin__get_agent_datasources`
- `mcp__plugin_mosofin_mosofin__get_datasource_tools`
- `mcp__plugin_mosofin_mosofin__invoke_datasource_api_tool`

The plugin's `local` helper exposes the same tools as
`mcp__plugin_mosofin_local__…` once signed in. Use whichever route works; one
is enough. A Claude connector may name them differently (`mcp__MosoFin__…`).

Native pickers may not appear (production MCP is stateless JSON). Ask in chat,
then pass handles explicitly.

## Steps

1. Call `list_workspaces` with no arguments.
2. Show workspaces by **name** (and role). Never show integer tenant ids.
   If several exist, ask single- vs multi-workspace, then which name(s), and
   confirm with `list_workspaces(workspace_ids=[…], mode="single")` or
   `mode="multi"`. One accessible workspace auto-confirms server-side — still
   read the name back and wait for an explicit yes before invoking data tools.
3. Call `get_agent_datasources` for the confirmed `workspace_id`.
   - Refer to companies by `display_name`. Never show raw `data_source_id`.
   - If more than one row for a platform is `connected: true`, ask which
     company, then pass that `data_source_id` on every later call.
   - If the needed source is `connected: false`, stop. Tell the user to open
     the `reconnect_url` from a later error, or the MosoFin workspace
     data-sources page. Do not invent numbers.
4. Call `get_datasource_tools` for the chosen datasource (and `data_source_id`
   when required) to pick a valid `tool_name`.
5. Call `invoke_datasource_api_tool` with:
   - `datasource` (e.g. `quickbooks`)
   - `tool_name` from the catalog (e.g. `get_profit_and_loss`)
   - `workspace_id` (the opaque handle `list_workspaces` returned, copied exactly) on **every** call
   - `data_source_id` on **every** call when the workspace has multiple companies
   - `params` with concrete `YYYY-MM-DD` dates — resolve "last month" / "this
     quarter" before invoking. Transaction searches and period reports need
     both `start_date` and `end_date`. As-of reports (`get_balance_sheet`,
     `get_aged_receivables`, …) take an optional `report_date` (default today).
     Get-by-id tools need `id`.
   Multiple independent invokes may run in parallel in one turn.

## Result handling

- **Pagination** (search tools): if `pagination.has_more` is true, re-invoke
  with `params.offset = pagination.next_offset` until complete or the user has
  enough. Omit `max_results` unless a smaller page is needed.
- **Budgets** are two-step: `search_budgets` to list names, then
  `get_budget_details` with `budget_id` or `budget_name`.
- **`mock` flag**: `false` means live numbers — say so. `true` means
  demo/fixture data — tell the user the numbers are not real.

## Read-only boundary

MosoFin cannot create, update, send, or delete records in any connected
accounting platform or other SaaS. If asked to (e.g. "create an invoice"), do not invoke — explain
the boundary and offer the read equivalent (e.g. `search_invoices`).

## Errors

- **Unknown tool / MosoFin tools missing / sign-in required** — the user is
  not signed in to MosoFin in this host. Never say "refresh/reconnect". Keep
  the question (dates already resolved) and follow `/mosofin:connect`
  (`skills/connect/SKILL.md`); when the user says they're done, confirm the
  workspace and answer the original question. Do not invent data.
- **Workspace not confirmed** — confirm via `list_workspaces` then retry.
- **`entity_required`** — ask which company from `entities[]`; retry with that
  `data_source_id`.
- **`datasource_not_active` / `connection_unavailable`** — give the user
  `reconnect_url`. Do not guess data.
- **`invalid_params`** — fix dates/fields and retry.
- **`approval_required`** — ask the user, then retry with `approved=true`.
- **`tool_policy_disabled` / valid-access refusal** — explain; do not leak or
  invent data.

## Grounding

Answer only from invoke results in this conversation. Do not use general
knowledge or another company's memory. End data-backed answers with one
**Data sources** line (datasource + tool + `fetched_at` from `provenance`).
If the fetch does not cover part of the question, say so and name the tool
that could fetch it.

Attribution

Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.

Comments

Loading comments…

Newsletter

Get the weekly list of safe new skills, and the ones we pulled.