# find_pattern

> Page: https://docs.plotwork.dev/mcp/tools/find-pattern. Index of every page: https://docs.plotwork.dev/llms.txt

Finds a ready-made, checked architecture diagram for a request such as "three tier network", "serverless api", or "two availability zones". It is a workflow of the MCP server and the HTTP API, with the title "Find pattern".

## TL;DR

| Question | Answer |
|---|---|
| What is it? | A workflow: one call does the work of several tools and returns one combined answer. |
| What does it do? | Finds a ready-made, checked architecture diagram for a request such as "three tier network", "serverless api", or "two availability zones". |
| What does it replace? | searching the documentation for an example to copy. |
| How do I call it over HTTP? | [`POST /v1/patterns/find`](https://docs.plotwork.dev/api/post-v1-patterns-find.md) |
| Does it change anything? | No. It is read-only and idempotent, and it talks to nothing outside itself. It saves no file and returns its answer as data. |
| Which bounds apply? | `maxPatternQueryLength`, `maxPatternTags`, `maxPatternResults`. See the bounds below. |
| Where do I read its schema as data? | An MCP client gets the name, description, and JSON Schema of every tool from `tools/list`. |

## What it does

Workflow. Finds a ready-made, checked architecture diagram for a request such as "three tier network", "serverless api", or "two availability zones". Send the request in plain words, and optionally a provider (neutral, aws, azure, or gcp), tags, a diagram kind, and a limit of up to 5. Returns the best matches first, each with an id, a one-sentence summary, tags, and the flavours it comes in, never the source. Start here when the user asks for a common architecture: a pattern is already validated, laid out, and described, so you adapt it instead of drawing from nothing. Replaces searching the documentation for an example to copy.

## Steps

| Operation | Runs | What it does |
|---|---|---|
| `findPatterns` | always | Search the pattern library for an architecture by its words, with optional provider, tag, and kind filters. |

One call performs at most 1 operations.

## Example call

The arguments of the call, as JSON:

```json
{
  "query": "three tier network",
  "provider": "azure"
}
```

## Prompts that lead to it

- Draw a three-tier network with load balancers.
- Which pattern shows a primary and a replica database in two availability zones?
- Find a serverless API pattern for AWS.

## Arguments

| Field | Type | Required | Description |
|---|---|---|---|
| `query` | `string` | yes | The architecture wanted, in plain words, such as "three tier network". at least 1 character; at most 200 characters. |
| `provider` | `"neutral" \| "aws" \| "azure" \| "gcp"` | no | Only patterns that come in this flavour: neutral, aws, azure, or gcp. |
| `tags` | `string[]` | no | Tags every result must have, such as "load balancer". Up to 5. |
| `kind` | `"flow" \| "sequence" \| "schema" \| "git" \| "gantt" \| "class" \| "state" \| "timeline" \| "journey" \| "mindmap" \| "treemap" \| "pie" \| "quadrant" \| "layers" \| "c4" \| "matrix" \| "sankey" \| "xychart" \| "tree" \| "swimlane"` | no | Only patterns of this diagram kind: flow, sequence, schema, git, gantt, class, state, timeline, journey, mindmap, treemap, pie, quadrant, layers, c4, matrix, sankey, xychart, tree, or swimlane. |
| `limit` | `integer` | no | Most results to return, up to 5. minimum 1; maximum 5; default 5. |

## Result

| Field | Type | Required | Description |
|---|---|---|---|
| `query` | `string` | yes | The query that was searched. |
| `matches` | `object[]` | yes | Up to the limit, best match first. Empty when nothing fits. |
| `matches[].id` | `string` | yes | The pattern id, as find_pattern returns it, such as three-tier-network. at least 1 character; at most 60 characters. |
| `matches[].title` | `string` | yes |  |
| `matches[].summary` | `string` | yes | One sentence: what the diagram shows. |
| `matches[].kind` | `string` | yes | A diagram kind: flow, sequence, schema, git, gantt, class, state, timeline, journey, mindmap, treemap, pie, quadrant, layers, c4, matrix, sankey, xychart, tree, or swimlane today. Later versions add kinds, so expect others. |
| `matches[].tags` | `string[]` | yes |  |
| `matches[].providers` | `("neutral" \| "aws" \| "azure" \| "gcp")[]` | yes | The flavours the pattern comes in. |
| `matches[].score` | `number` | yes | How well it matches; only the order of the results is meaningful. |
| `next` | `string` | yes | The next step in one sentence. |

## Behavior hints

| Hint | Value |
|---|---|
| `readOnlyHint` | true |
| `destructiveHint` | false |
| `idempotentHint` | true |
| `openWorldHint` | false |

## Bounds

A bound that is reached is reported in the result; nothing is cut silently.

| Bound | Value | What it limits |
|---|---|---|
| `maxPatternQueryLength` | 200 | Characters in the query. |
| `maxPatternTags` | 5 | Tags a search can require. |
| `maxPatternResults` | 5 | Matches in one answer. |

## See also

| Doc | Why |
|---|---|
| [Tool reference](https://docs.plotwork.dev/mcp/tools.md) | Every tool, with the workflows first |
| [`POST /v1/patterns/find`](https://docs.plotwork.dev/api/post-v1-patterns-find.md) | The same operation over HTTP |
| [Language reference](https://docs.plotwork.dev/reference/language.md) | What the diagram source may contain |
| [Writing diagrams with an agent](https://docs.plotwork.dev/mcp/agent-loop.md) | The loop in practice |
