Skip to content
Skills Library
DevOps & cloud · Analysis

functions-debug

/functions-debug

Diagnose DigitalOcean Functions failures: a bad invoke result, timeouts, missing logs, activation history, and HTTP 204 from a web function. Use when a function errors, times out, returns the wrong body, "no activations", or the user asks for function logs. For deploying a fix use functions-deploy.

Licence
MIT
Last repository change
11.11.2026

Assessment and security

90/ 100Class: good
Format25 / 25
Frontmatter with name and description, valid name, description up to 1,024 characters, name matching the folder.
Discoverability25 / 25
Description explains when to use the skill, has a reasonable length and uses third person.
Content25 / 35
At least 150 words and at most 500 lines, headings, step lists, examples or code.
Hygiene15 / 15
No placeholders such as TODO, no Windows paths, with a licence.
Riskno signals detected in the scan
Files in this package
1
Scripts
0
HTML comments
0
URLs in SKILL.md
6
Deprecation

No signals detected. Repository changed on 11.11.2026, without references to retired models or APIs.

Licence

MIT, open: use and modify while retaining author attribution.

What it does and when to use it

Diagnose DigitalOcean Functions failures: a bad invoke result, timeouts, missing logs, activation history, and HTTP 204 from a web function. Use when a function errors, times out, returns the wrong body, "no activations", or the user asks for function logs. For deploying a fix use functions-deploy.

Triggers from the description

no activations
Original author description

Diagnose DigitalOcean Functions failures: a bad invoke result, timeouts, missing logs, activation history, and HTTP 204 from a web function. Use when a function errors, times out, returns the wrong body, "no activations", or the user asks for function logs. For deploying a fix use functions-deploy.

How it works

  1. Retrieval sources
  2. How tools are reached
  3. Safety rules
  4. Workflow
  5. Pitfalls
Original SKILL.md headings · 113 lines, 882 words
SKILL.md preview
---
name: functions-debug
description: >-
  Diagnose DigitalOcean Functions failures: a bad invoke result, timeouts,
  missing logs, activation history, and HTTP 204 from a web function. Use
  when a function errors, times out, returns the wrong body, "no activations",
  or the user asks for function logs. For deploying a fix use functions-deploy.
metadata:
  author: digitalocean
  product: functions
  version: "1.0"
---

# Debug DigitalOcean Functions

Start from the invoke result you already have. Activation history is a
second source, and it does not cover every call.

Your knowledge of Functions may be outdated. Prefer tool output and the docs
below over pre-training.

## Retrieval sources

| Source | Retrieve via | Use for |
| --- | --- | --- |
| Tool reference | `references/tools.md` in **functions-manage**, or `retrieve_schema` | Arguments |
| Activation records | `https://docs.digitalocean.com/products/functions/reference/activation-records/index.html.md` | Fields on an activation |
| Parameters and responses | `https://docs.digitalocean.com/products/functions/reference/parameters-responses/index.html.md` | What a handler must return |
| Async how-to | `https://docs.digitalocean.com/products/functions/how-to/async-functions/index.html.md` | Long runs |
| Limits | `https://docs.digitalocean.com/products/functions/details/limits/index.html.md` | Timeout, payload size, log size, retention |
| HTTP 204 support note | `https://docs.digitalocean.com/support/why-does-my-function-return-a-204-response-when-i-call-it-from-postman-or-curl/index.html.md` | Web functions that return no body |
| Develop how-to | `https://docs.digitalocean.com/products/functions/how-to/develop-functions/index.html.md` | Invoke and inspect loop |

## How tools are reached

Tools are in the `functions` service. Through `invoke_tool`, use
`functions/<tool>`. `NamespaceID` is the namespace UUID.

These tools are read-only except `functions-invoke-action`, which runs the
user's code. Do not change action source in this skill. A fix is
**functions-deploy**, after the user agrees.

## Safety rules

| Tier | Behaviour | Tools |
| --- | --- | --- |
| Read | Run freely | `functions-list-namespaces`, `functions-get-namespace`, `functions-list-actions`, `functions-get-action`, `functions-list-activations`, `functions-get-activation`, `functions-get-activation-logs`, `functions-get-activation-result` |
| Run code | Only to reproduce a failure the user asked about. One call. Their payload, or empty if they said there is no payload | `functions-invoke-action` |

- Omit namespace `key` from summaries.
- `IncludeCode: true` only when the bug is in the source the user wants you
  to read. Do not echo embedded secrets.
- Activations can contain request data. Quote the error and the relevant
  lines, not the whole record, when it holds payloads.
- In unattended runs, do not invoke. Report the latest activation if one
  exists.

## Workflow

### 1. Identify the action

1. `functions-list-namespaces`, then match the user's label to a UUID.
2. `functions-get-action` with `PackageName` when the action is in a package.
   Note `Kind`, `Timeout`, and `Memory`. Defaults are 60000 ms and 256 MB.
   The product maximum timeout is 15 minutes. Memory is 128 MB to 1 GB.

### 2. Use the result you already have

A blocking `functions-invoke-action` (the default) returns the result in
that tool response. Read it before you search history.

- `Blocking: false` returns an activation id. Then
  `functions-get-activation` with that id.
- `Result: true` on a blocking invoke returns only the function result.
- `InvokeTimeout` is how long the MCP call waits. The tool description caps
  it (default and max 60000 ms). That cap is the wait, not the action's own
  timeout. A function allowed to run longer than that wait must be invoked
  with `Blocking: false`, then polled. See the async how-to. Web functions
  cannot be invoked asynchronously.

### 3. Activation history

`functions-list-activations` with `NamespaceID` and, when you know it,
`FunctionName`. For a packaged action, try the name `doctl` prints
(`package/action`, such as `sample/hello`) if the bare name returns nothing.

`Since` and `Upto` are milliseconds since epoch. `Limit` and `Skip` paginate
(default 30, max 200). Leave `IncludeDocs` false until you need one record's
body. Then `functions-get-activation-logs` or `functions-get-activation-result`.

Limits that explain an empty list:

- Activation records are kept for **asynchronous** invocations, for 72 hours.
  A synchronous web call often has no record. Say that, and use the blocking
  invoke result instead of retrying the list.
- Logs are capped (256 KB per invocation on the limits page) and follow the
  same retention.

### 4. Classify

| What you see | What to tell the user |
| --- | --- |
| Timeout, or the wait hit `InvokeTimeout` | The action limit may be too low, or the call is blocking past the MCP wait. Raising `Timeout` is a deploy change (**functions-deploy**). Long work uses async invoke, not a bigger `InvokeTimeout` |
| HTTP 204 from curl or Postman to the web URL | The handler must return a response object. Follow the 204 support note. `functions-invoke-action` is not that public URL |
| `404` or "action not found" | Wrong UUID, wrong `PackageName`, or the project deployed to another account. **functions-deploy** covers the `doctl` account check. Do not create an access key |
| Empty logs | Sync invoke, expired retention, or the function did not write stdout. 72 hours is the cap |
| Result larger than 1 MB, or input rejected | Payload and result limits. See limits |
| Works in invoke, fails on the public URL | Web access is a `project.yml` setting (`web: true`), not something this skill turns on |

Do not redeploy as the first step. Show the error, the action limits, and
the proposed code or config change. Then load **functions-deploy** if the
user wants it applied.

## Pitfalls

- Polling `functions-list-activations` after a blocking invoke and treating
  "no rows" as "the invoke did not run".
- Passing `package/action` as `ActionName` on `functions-get-action`. That
  tool wants `ActionName` and optional `PackageName` separately.
- Editing code in the control panel. Multi-file functions cannot be edited
  there. Change the project and redeploy.
- Log forwarding (Papertrail, Datadog, Better Stack) is not an MCP tool.
  The forward-logs how-to is on the docs index. Managed OpenSearch is not a
  supported destination.

Versions

The database has no other skills named functions-debug.

Database snapshot: 13.11.2026 · package version 655d8ce50d4f (SHA-256 digest of the entire package)

Downloads in the last 30 days: 0 · ranking

Report a problem with this skill: harmful content, incorrect descriptions or an author’s removal request.

Similar skills

  • 90functions-manage
    List, inspect, and delete DigitalOcean Functions namespaces, packages, and actions, and create or change scheduled triggers. Use when the user asks what functions they have, to create or delete a namespace, package, or function, or to schedule a function with cron. Also use when…
  • 100functions-deploy
    Deploy or update DigitalOcean Functions: a single file with no dependencies inline, or a local project (project.yml, multiple files, dependencies, or build.sh) through doctl serverless deploy. Use when the user says deploy a function, serverless, Cloud Functions, "create a…
  • 95azure-diagnostics
    Debug and troubleshoot production issues on Azure. Covers Container Apps and Function Apps diagnostics, log analysis with KQL, health checks, and common issue resolution for image pulls, cold starts, health probes, and function invocation failures. USE FOR: debug production…
  • 90digitalocean-management
    DigitalOcean management services for monitoring, uptime checks, and resource organization with Projects. Use when setting up observability, alerts, and operational visibility on DigitalOcean.
  • 100logs
    A bounded, redacted sample of a Lambda function's logs for a time range, optionally filtered. Use when the user asks to see recent logs or errors of a function.
  • 100cloud-functions
    CloudBase function runtime guide for building, deploying, and debugging your own Event Functions or HTTP Functions. This skill should be used when users need application runtime code on CloudBase, not when they are merely calling CloudBase official platform APIs.

Feedback and reports

Your message goes to Bartosz Sokoliński. An email address is needed only for a reply. See the privacy policy.