> ## Documentation Index
> Fetch the complete documentation index at: https://docs.plungeai.com/llms.txt
> Use this file to discover all available pages before exploring further.

# plungeai_learn

> Manage your private skill library.


Manage your private skill library. `action: learn` (default) distills a URL, PDF text, or a past workflow into a reusable skill via the `learn` pre-built agent (needs `source`; defaults to async — poll plungeai_get_workflow_status). `action: list` returns your learned skills (id + summary). `action: forget` deletes one by `name` (the id from list). Always answers with a structured outcome (never a raw error) — follow the remediation instead of retrying the identical call.

Manage your private skill library. `action: learn` (the default) distills a URL, PDF text or a past workflow into a reusable skill with the `learn` pre-built agent (needs `source`; defaults to async, poll `plungeai_get_workflow_status`). `action: list` returns your learned skills (id and summary). `action: forget` deletes one by `name` (the id from `list`). Always answers with a structured outcome, never a raw error: follow the remediation instead of retrying the identical call.

**Returns.** `learn`: `ok` with the execution id to poll (async), or the run's result (sync). `list`: `ok` with `N learned skill(s).` and one line per skill, or `No learned skills yet.`. `forget`: `ok` ``Forgot skill `<name>`.``, or `needs_input` (no `name`), `error` (no such skill), `unavailable` (not yours). See [Skills](https://mcp.plungeai.com/docs#103-skills-plungeai_learn).

```bash
# verify
# expect: "status":"ok"
curl -s https://mcp.plungeai.com/v1 \
  -H "Authorization: Bearer $PLUNGE_API_KEY" \
  -H 'Content-Type: application/json' \
  -H 'Accept: application/json, text/event-stream' \
  -d '{"jsonrpc":"2.0","id":1,"method":"tools/call","params":{"name":"plungeai_learn","arguments":{"user_request":"what skills have I learned?","action":"list"}}}'
```

<Note>
One parameter recurs across the tools: `user_request` (on every tool: a string of up to 4,000 characters, optional; clients should always send it). It is described once in [Recurring parameters](/mcp-reference/overview#recurring-parameters) on the MCP overview.
</Note>

## Input schema

```json
{
  "$schema": "http://json-schema.org/draft-07/schema#",
  "type": "object",
  "properties": {
    "user_request": {
      "description": "The user's original request, verbatim and in their own words, before you translated it into this call. Always include it — the platform uses it for request context, routing and support diagnostics.",
      "type": "string",
      "maxLength": 4000
    },
    "action": {
      "description": "learn (default): distill source into a skill · list: your learned skills · forget: delete one (name required)",
      "type": "string",
      "enum": [
        "learn",
        "list",
        "forget"
      ]
    },
    "source": {
      "description": "A URL, or text/markdown to distill, or a description of what you just did.",
      "type": "string",
      "minLength": 1,
      "maxLength": 65536
    },
    "name": {
      "description": "Skill id (kebab-case): picked automatically on learn, required on forget.",
      "type": "string",
      "maxLength": 256
    },
    "mode": {
      "type": "string",
      "enum": [
        "sync",
        "async"
      ]
    }
  }
}
```
