agentsclimarketplace

Apideck mcp month end close

Skill apideck-libraries/api-skills/providers/cursor/plugin/skills/apideck-mcp-month-end-close

One abstraction, 146 SaaS connectors. Agent skills for Apideck's Unified API — integrate Salesforce, QuickBooks, BambooHR, Jira, Shopify and 140+ more by changing one string.

Install
npx -y skills add apideck-libraries/api-skills --skill apideck-mcp-month-end-close

Assembled from the repository path, not quoted from the project. Check it against their README if it does not work.

One thing to look at

  • 3 stars3 stars. Stars are a popularity signal and not a quality one, but at this level it is likely that nobody has read this closely except its author, and you would be relying on your own review.

What its author says it does

Copied from the file, not written here

Task playbook for fetching a month-end financial snapshot via the Apideck MCP server's `apideck-month-end-close-check` workflow tool. Use when the user asks for a P&L, balance sheet, aged creditors, or aged debtors view at a point in time. Read-only, idempotent, returns partial snapshots when some reports aren't supported by the connector.

The file declares its own license as Apache-2.0. That is the author’s claim about this one file, and it is not the same thing as the license GitHub reports for the repository, which is listed with the other numbers below.

SKILL.md

4.8 KB, ~1.2k tokens by cl100k_base, as published. Nobody here has run it

Month-end close snapshot (Apideck MCP)

When the user wants a one-shot financial snapshot, prefer apideck-month-end-close-check over fetching the four reports individually. The workflow fans out aged creditors, aged debtors, balance sheet, and profit-and-loss in parallel against the connected accounting service and returns one aggregated object.

When this is the right tool

User intentTool
"Run the month-end close", "P&L plus balance sheet for last month", "Aged AP/AR snapshot as of March 31"apideck-month-end-close-check
"Just the P&L"accounting-profit-and-loss-get directly
"Just aged creditors"accounting-aged-creditors-get directly
"Reconcile bank statements"Out of scope — use the connector's native reconciliation

IMPORTANT RULES

  • READ-ONLY, idempotent. Safe to call repeatedly — no confirmation needed. The tool fetches data; it doesn't post anything.
  • OMIT report_as_of_date to use today. Most users running a month-end ask for "last month", in which case pass an explicit YYYY-MM-DD like "2026-03-31".
  • EXPECT partial results. Connector coverage varies — Odoo doesn't implement aged-creditors, Moneybird doesn't implement balance-sheet, etc. The workflow returns { unsupported: true, reason } for steps the connector can't fulfill, plus a top-level warnings[] array. Surface these to the user instead of treating them as failures.
  • isError: true only fires when every report failed — typically a missing connection or expired credentials. Partial snapshots come back as isError: false so the agent can still extract value.

Argument map

ArgRequiredDefaultNotes
report_as_of_datenotoday (YYYY-MM-DD)Cutoff date for aged reports + balance sheet.
x-apideck-service-idnofirst accounting connectionE.g. "xero", "quickbooks".

Result shape

Full success

{
  "report_as_of_date": "2026-03-31",
  "service_id": "xero",
  "aged_creditors": { "summary": [...] },
  "aged_debtors":   { "summary": [...] },
  "balance_sheet":  { "assets": 100000, ... },
  "profit_and_loss":{ "revenue": 250000, ... }
}

Partial — some reports unsupported

{
  "report_as_of_date": "2026-03-31",
  "service_id": "odoo",
  "aged_creditors": { "unsupported": true, "reason": "Aged-creditors not implemented for Odoo" },
  "aged_debtors":   { "unsupported": true, "reason": "..." },
  "balance_sheet":  { "assets": 100000, ... },
  "profit_and_loss":{ "revenue": 250000, ... },
  "warnings": [
    "aged_creditors: unsupported on odoo (...)",
    "aged_debtors: unsupported on odoo (...)"
  ]
}

isError: false — two reports came back, that's still useful.

Total failure

{
  "report_as_of_date": "2026-03-31",
  "service_id": null,
  "aged_creditors": { "error": "..." },
  "aged_debtors":   { "error": "..." },
  "balance_sheet":  { "error": "..." },
  "profit_and_loss":{ "error": "..." },
  "warnings": [...]
}

With isError: true. Usually a missing connection — surface the elicitation URL.

Worked example

User: "Give me a month-end snapshot for March 2026 from QuickBooks."

{
  "name": "apideck-month-end-close-check",
  "arguments": {
    "report_as_of_date": "2026-03-31",
    "x-apideck-service-id": "quickbooks"
  }
}

Then summarize for the user, calling out any unsupported rows distinctly:

On 2026-03-31 in QuickBooks: revenue $250K, total assets $100K. Aged creditors / aged debtors aren't supported by this connector — pull those from the Bills-list and Invoices-list reports if you need them.

Common failure modes

SymptomCauseFix
All four reports unsupportedConnector doesn't implement these (e.g. Odoo without the Reports module)Surface the limitation; suggest aggregating from accounting-bills-list + accounting-invoices-list instead
UnsupportedFiltersError on a reportConnector rejects filter[report_as_of_date] or filter[end_date]Connector quirk — currently surfaces as unsupported with the upstream message
UrlElicitationRequiredErrorConnection expired/missingSurface consent URL, retry

Related

Gives 0 of the 12 instructions most mcp tooling skills give in ~1.2k tokens

Counted across 638 of the 750 authors here whose files we hold, read 2026-08-06

  • create ten complex read-only evaluation questionsin 71 of 638, across 17 files
  • test servers using MCP Inspectorin 60 of 638, across 18 files
  • provide actionable error messagesin 56 of 638, across 14 files
  • prioritize comprehensive API coverage over specific workflowsin 54 of 638, across 12 files
  • use TypeScript and Streamable HTTP for remote serversin 53 of 638, across 7 files
  • define structured output schemas where possiblein 51 of 638, across 9 files
  • use Zod or Pydantic for input schemasin 48 of 638, across 6 files
  • fetch MCP specification pages with markdown suffixin 46 of 638, across 4 files
  • load framework documentation using WebFetchin 45 of 638, across 3 files
  • verify each evaluation answer independentlyin 45 of 638, across 3 files
  • implement API client with authentication and paginationin 45 of 638, across 3 files
  • Define input schemas with validationin 28 of 638, across 10 files

Said here and by no other author read

  • prefer the close-check workflow over individual reports
  • pass an explicit date for prior months
  • surface unsupported reports as limitations
  • treat partial snapshots as successful
  • summarize fetched data for the user
  • surface the consent url on total failure

Grouped from the skills themselves: near-identical wordings counted once, and counted by distinct author, so one author publishing three of these counts once. Length counted with cl100k_base; the agent that loads this file may tokenize it differently.

Keep looking

Skills are one crate of 328,083. Ordering is by how many stacks a row turns up in, so the top of any crate is what has actually been picked rather than what has the most stars.