spring-ai-playground

description: Prompt Presets - ready-to-use system prompts for Agentic Chat. Apply a role as-is or save your own. 19 built-in presets, each with a real captured run.

Prompt Presets

Where: Agentic Chat header → Prompt Library (clipboard icon) → the Presets and My presets groups.

A preset is a complete, ready-to-use system prompt. You select it, optionally tweak the text, and apply it - no fields to fill. Presets cover whole roles: a research agent, a log detective, a translator, and so on. The built-in ones live under Presets; the ones you save live under My presets.

Presets vs Templates. Both live in the Prompt Library and both end up as a conversation’s system prompt. A preset (this page) is a complete prompt you apply as-is. A template is parameterized - it has `` you fill in first, and a renderer assembles the finished prompt. Reach for a preset to start fast; reach for a template when you want the same structure with different specifics each time. Filling a template, in fact, produces a preset.

The Prompt Library dialog - a left list split into Templates (fill variables) and Presets (ready to use), with the right pane awaiting a selection{ width=”1500” }

Applying a preset

Selecting a preset shows its full system prompt in the right pane, editable in place. From there:

The Workspace organizer preset selected - eleven ready tool chips, the filesystem scope note, and the editable system prompt with Apply to chat and Save as preset buttons{ width=”1500” }

Editing before applying is encouraged - a built-in preset is a strong starting point, not a fixed contract.

Required tools

A preset can declare the built-in tools its role uses - for example Log detective names seven local-log tools, Data wrangler names a dozen data and file tools, and Workspace organizer names all eleven filesystem tools with the mutating ones gated by human-in-the-loop approval. The detail pane lists them under Required tools. The built-in presets are all wired to key-less (Local Pass) tools, so they apply with no setup. If a preset names a key-gated tool - more common in presets you save yourself - selecting it checks for the needed API keys and blocks Apply until they are set, listing the missing tools and their environment keys in red under the preset; you add them in Tool Studio. One preset, Self-equipping agent, declares no fixed list at all - it uses dynamic tool discovery to search the whole catalog on demand instead, and it is what a brand-new chat opens with by default (switch to any other preset, or none, whenever you like).

Applying a preset resets the built-in MCP server to expose exactly those tools - the same preset-authoritative model the default-tool preset uses - turns built-in MCP on for the new chat, and selects them in the tool selector. A confirmation dialog lists what will be exposed before you commit. The new exposure persists across restarts and is the same set shown in Tool Studio’s built-in exposure, so the chat and Tool Studio always agree. Tools are never enabled silently. The startup tool preset and this chat preset are two entry points to that same exposed set, not competing systems - see Default Tools → Two presets, one exposed set.

My presets - saving your own

Anything you save with Save as preset - whether an edited built-in, a free-typed prompt from the settings drawer, or a filled-in template - lands under My presets. The save dialog also carries a Use dynamic tool discovery checkbox, so a preset you author can opt into dynamic discovery instead of declaring a fixed tool list. They are stored under your home directory (<home>/spring-ai-playground/chat/save/) so they persist across launches, and they appear in the same list as the built-ins. Saving under a name you have used before updates that entry in place.

The storage layout and load order are covered in Context Engineering → System prompts, presets, and templates.

Built-in presets

Spring AI Playground ships 19 presets - ready-to-apply roles, many of them wired to a set of built-in tools. Each card carries a real captured run - the exact input and the result it produced, locally on Ollama. Click a card to see it. Process panels (THINK, MCP TOOLS) are shown folded, the way they appear once a turn finishes - click any panel in the app to open it.

General assistant no tools
:material-chat-processing-outline:
assistant · general
A concise default - answers directly and cites anything it uses. Works with no tools enabled.
**Tools**   none
**Model**   `qwen3.5:9b-mlx`
Click for a real run - input and result
Personal assistant 7 tools
:material-account-heart-outline:
assistant · personal
Gets small real-world tasks done through [action cards](/spring-ai-playground/docs/features/agentic-chat/#action-cards) - draft an email, add a calendar event, show a place on a map - plus time, weather, holidays, and arithmetic.
**Tools**   `sendEmail` · `addToCalendar` · `showLocation` · `getCurrentTime` · `getWeather` · `getPublicHolidays` · `evalExpression`
**Model**   `qwen3.5:9b-mlx`
Click for a real run - input and result
Research agent 4 tools
:material-book-search-outline:
agent · research
Multi-source research with citations; writes a bounded brief on request.
**Tools**   `searchWikipedia` · `searchArxiv` · `searchHackerNews` · `extractPageContent`
**Model**   `qwen3.5:9b-mlx` · Reasoning `Low`
Click for a real run - input and result
Self-equipping agent dynamic
:material-tools:
agent · dynamic
Equips itself with the right tools on demand via `toolSearchTool`, scaling to your whole toolbox. A brand-new chat opens with this preset by default.
**Tools**   dynamic discovery (`toolSearchTool`)
**Model**   `qwen3.5:4b-mlx` · Reasoning `Low`
Click for a real run - input and result
Data wrangler 14 tools
:material-table-cog:
agent · data
CSV / text ETL with row-count invariants.
**Tools**   `requestFileUpload` · `readTextFile` · `listDir` · `listAllowedDirectories` · `parseCsv` · `formatCsv` · `writeTextFile` · `appendTextFile` · `stats` · `evalExpression` · `regexReplace` · `renderTable` · `renderChart` · `renderStatCards`
**Model**   `qwen3.5:4b-mlx` · Reasoning `Low`
Click for a real run - input and result
Korea concierge 8 tools
:material-map-marker-radius-outline:
agent · korea
Live Korean data over no-key sources - Upbit / Bithumb crypto, weather, and holidays.
**Tools**   `getCurrentTime` · `getUpbitTicker` · `getBithumbTicker` · `geocodeAddress` · `getOpenMeteoForecast` · `getPublicHolidays` · `showLocation` · `addToCalendar`
**Model**   `qwen3.5:4b-mlx` · Reasoning `Low`
Click for a real run - input and result
GitHub repo analyst 8 tools
:simple-github:
agent · github
A repo due-diligence scorecard from public GitHub.
**Tools**   `getGithubRepo` · `listGithubRepoContributors` · `listGithubRepoIssues` · `getGithubLatestRelease` · `getGithubFileContent` · `renderStatCards` · `renderTable` · `renderTimeline`
**Model**   `qwen3.5:4b-mlx` · Reasoning `Low`
Click for a real run - input and result
Release notes writer 5 tools
:material-note-text-outline:
agent · github
Keep-a-changelog style notes from releases and issues.
**Tools**   `getGithubLatestRelease` · `listGithubRepoReleases` · `listGithubRepoIssues` · `getGithubFileContent` · `renderTimeline`
**Model**   `qwen3.5:9b-mlx` · Reasoning `Low`
Click for a real run - input and result
Log detective 7 tools
:material-file-search-outline:
agent · ops
Root-cause hunting over local logs.
**Tools**   `listAllowedDirectories` · `findFiles` · `searchInFiles` · `grepFile` · `sliceFile` · `statFile` · `stats`
**Model**   `qwen3.5:4b-mlx` · Reasoning `Low`
Click for a real run - input and result
Document detective 12 tools
:material-text-box-search-outline:
agent · files
Investigates documents the Unix-pipeline way - upload a file or point at a folder, then find, grep, slice, and count with the filesystem tools.
**Tools**   `listAllowedDirectories` · `requestFileUpload` · `listDir` · `findFiles` · `searchInFiles` · `grepFile` · `sliceFile` · `lineCount` · `readTextFile` · `sortFile` · `cutFileFields` · `statFile`
**Model**   `qwen3.5:9b-mlx`
Click for a real run - input and result
Crypto market watch 6 tools
:material-bitcoin:
agent · finance
Global vs Korean crypto, with the kimchi-premium math shown.
**Tools**   `getCryptoPrice` · `getUpbitTicker` · `convertCurrency` · `evalExpression` · `getCurrentTime` · `renderChart`
**Model**   `qwen3.5:4b-mlx` · Reasoning `Low`
Click for a real run - input and result
Trip planner 9 tools
:material-airplane-takeoff:
agent · travel
A dated travel briefing - weather, holidays, and currency.
**Tools**   `getCurrentTime` · `geocodeAddress` · `getOpenMeteoForecast` · `getPublicHolidays` · `getCountryInfo` · `convertCurrency` · `showLocation` · `plotPointsOnMap` · `addToCalendar`
**Model**   `qwen3.5:4b-mlx` · Reasoning `Low`
Click for a real run - input and result
Tech pulse digest 4 tools
:material-trending-up:
agent · trends
A community trend digest with linked sources.
**Tools**   `searchHackerNews` · `searchStackOverflow` · `searchGithubRepos` · `getCurrentTime`
**Model**   `qwen3.5:4b-mlx` · Reasoning `Low`
Click for a real run - input and result
Data visualizer 23 tools
:material-chart-box-outline:
agent · visualization
Fetches live data and renders it as [charts, maps, and diagrams](/spring-ai-playground/docs/features/agentic-chat/#action-cards) instead of plain lists.
**Tools**   `getCurrentTime` · `evalExpression` · `getCryptoPrice` · `getOpenMeteoForecast` · `getRecentEarthquakes` · `renderChart` · `plotPointsOnMap` · `renderDiagram` · `showImage` · `renderTable` · `renderStatCards` · `renderCandlestick` · `renderHeatmap` · `renderTimeline` · `renderComparison` · `renderDiff` · `renderSankey` · `renderFunnel` · `renderTreemap` · `renderGraph` · `renderWindRose` · `renderChoropleth` · `renderGeoHeat`
**Model**   `qwen3.5:4b-mlx` · Reasoning `Low`
Click for a real run - input and result
Market charts 6 tools
:material-chart-line:
agent · finance
OHLC candlestick charts for crypto and stocks.
**Tools**   `getCurrentTime` · `getCryptoPrice` · `getUpbitCandles` · `renderCandlestick` · `renderChart` · `renderStatCards`
**Model**   `qwen3.5:4b-mlx` · Reasoning `Low`
Click for a real run - input and result
Diff inspector 5 tools
:material-file-compare:
agent · code
Compares two files or texts side by side and explains the changes.
**Tools**   `listAllowedDirectories` · `findFiles` · `readTextFile` · `getGithubFileContent` · `renderDiff`
**Model**   `qwen3.5:4b-mlx` · Reasoning `Low`
Click for a real run - input and result
Decision matrix 5 tools
:material-scale-balance:
agent · decision
Weighted option-vs-criteria scoring with the arithmetic shown.
**Tools**   `evalExpression` · `stats` · `renderTable` · `renderComparison` · `renderChart`
**Model**   `qwen3.5:9b-mlx` · Reasoning `Low`
Click for a real run - input and result
Image analyst 7 tools
:material-image-search-outline:
agent · vision
Analyzes [attached images](/spring-ai-playground/docs/features/agentic-chat/image-attachments.html) with a vision model, tabulates findings and EXIF metadata, maps geotagged photos, and exports tables as CSV.
**Tools**   `describeImage` · `listDir` · `readTextFile` · `renderTable` · `plotPointsOnMap` · `formatCsv` · `writeTextFile`
**Model**   `qwen3.5:4b` (a vision GGUF build - the `-mlx` variants cannot see)
Click for a real run - input and result
Workspace organizer 11 tools
:material-folder-cog-outline:
agent · files
Keeps the chat working directory tidy - inventory, restructure, clean up - with a [human-in-the-loop](/spring-ai-playground/docs/features/human-in-the-loop.html) approval before every change.
**Tools**   `listAllowedDirectories` · `listDir` · `findFiles` · `searchInFiles` · `statFile` · `readTextFile` · `copyFile` · `moveFile` · `editTextFile` · `deleteFile` · `deleteDir`
**Model**   `qwen3.5:9b-mlx`
Click for a real run - input and result

The tools a preset names are built-in Default Tools; enable them from the chat tool selector (or let the preset select them on apply). Tools that need a key stay dormant until you supply the matching environment variable.


→ Back to Agentic Chat · the other half: Prompt Templates · how it all fits together: Context Engineering