Build automated blockchain analysis workflows on K3 — from natural language requests to deployed, running automations that fetch on-chain data, analyze it wi...
---
name: k3-blockchain-agent
description: >
Build automated blockchain analysis workflows on K3 — from natural language
requests to deployed, running automations that fetch on-chain data, analyze it
with AI, and deliver insights via email, Telegram, or Slack. Use this skill
whenever the user mentions blockchain workflows, on-chain analytics, DeFi
monitoring, token tracking, wallet alerts, pool analysis, protocol dashboards,
NFT tracking, automated trading, smart contract monitoring, or wants to automate
anything involving blockchain data. Also trigger when the user mentions K3,
workflow builder, or wants scheduled crypto/DeFi reports. Even if they just say
"monitor this wallet" or "track this token" — this skill applies.
---
# K3 Blockchain Agent
Transform requests like *"Send me daily updates about the WETH/USDC pool on Uniswap"*
into fully deployed workflows that fetch data, run AI analysis, and deliver reports
automatically.
## Setup
This skill requires the **K3 Development MCP** to be connected. The MCP provides
tools like `generateWorkflow`, `executeWorkflow`, `findAgentByFunctionality`, and
others that let you create and manage blockchain workflows programmatically.
If the K3 MCP isn't connected yet, tell the user they need to add it before
proceeding. Once connected, verify by calling `listTeamMcpServerIntegrations()` —
this confirms the connection and shows what data source integrations (TheGraph,
CoinGecko, etc.) the user's team has wired up. Every team's integrations will be
different — discover what's available rather than assuming.
## How Workflow Building Works
The K3 orchestrator is **conversational**. You describe what you want in plain
language, and the orchestrator asks clarifying questions, then builds and deploys
the workflow. Your job is to show up with the right information so the conversation
is productive.
The loop:
```
UNDERSTAND → what does the user actually want?
FIND DATA → how do we get that information into the workflow?
TEST → does the data actually come back correctly?
BUILD → give the orchestrator everything it needs
DEPLOY → launch it and verify it works
```
Skipping "test" is the most common mistake — you end up with a deployed workflow
that returns empty data.
## Step 1: Understand the Request
When a user asks for a workflow, figure out these parameters. Ask if anything is
unclear — don't guess on addresses or emails.
| Parameter | What to find out | Examples |
|-----------|-----------------|----------|
| **Data target** | What blockchain data do they need? | pool metrics, token price, wallet balance, NFT data |
| **Protocol** | Which DeFi protocol or chain feature? | Uniswap, Aave, SushiSwap, native transfers |
| **Chain** | Which blockchain? | Ethereum, Arbitrum, Polygon, Base, Stellar |
| **Schedule** | How often / what triggers it? | daily, hourly, on-demand, on wallet activity, on contract event, Telegram chatbot |
| **Analysis** | What kind of insights? | performance summary, anomaly alerts, trend report, trade signal |
| **Delivery** | How should results arrive? | email, Telegram, Slack, Google Sheets |
| **Actions** | Should the workflow do anything? | execute a swap, transfer tokens, write to a contract |
| **Specifics** | Any addresses or IDs? | pool address, token contract, wallet address |
If the user is new to DeFi, briefly explain relevant concepts as you go (what TVL
means, what a liquidity pool is, etc.). Don't assume they know the jargon.
## Step 2: Find the Right Data
This is the critical step. K3 has many ways to get data into a workflow, and you
need to figure out which approach works for the user's specific request.
### K3 data functions
These are the built-in functions for getting data into a workflow. Read
`references/node-types.md` for full details on each.
| Function | What it does |
|----------|-------------|
| **Read API** | Call any REST/GraphQL API — the most flexible option |
| **Read Smart Contract** | Query any smart contract directly on-chain |
| **Read Market Data** | Get token prices, volumes, market metrics |
| **Read Wallet** | Wallet balances, transfers, transaction history |
| **Read NFT** | NFT collections, floor prices, traits, holders |
| **Read Graph** | Query TheGraph subgraphs with custom GraphQL |
| **Read Deployment** | Pull output from your own deployed code on K3 |
| **AI Web Scraper** | Extract structured data from any web page |
| **AI Agent with tools** | AI that dynamically decides what to fetch |
### How to find the data you need
The goal is to figure out the best way to get the specific data the user wants.
Think of it as problem-solving — there are multiple valid approaches and you
should explore them:
1. **Check what the team already has** — call `listTeamMcpServerIntegrations()` to
see what MCP data sources are connected. If they have TheGraph, CoinGecko, or
other integrations set up, those are the easiest path.
2. **Search for existing templates** — call `findAgentByFunctionality()` with the
user's intent. If someone already built a similar workflow, use it as a starting
point.
3. **Think about which K3 function fits**:
- Need on-chain contract data? → **Read Smart Contract** can query it directly
- Need token prices or market data? → **Read Market Data** has it built in
- Need complex DeFi metrics (TVL, volume, fees)? → **Read Graph** with the right
subgraph, or **Read API** to a protocol's analytics endpoint
- Need wallet info? → **Read Wallet** for balances and history
- Need NFT data? → **Read NFT** for collections and metadata
- Need data from any public API? → **Read API** can call anything
- Need to scrape a website? → **AI Web Scraper** can extract and structure it
4. **Search the web** for the right endpoint. If you need a specific protocol's data,
look up `{protocol name} API`, `{protocol name} subgraph`, or `{protocol name}
GraphQL endpoint`. Many protocols publish public APIs and subgraphs.
5. **Ask the user** — they may know the API endpoint, have an API key, or know
exactly which smart contract to read from.
The key insight: there's rarely just one way to get the data. A Uniswap pool's TVL
could come from Read Graph (subgraph query), Read API (calling an analytics endpoint),
or even Read Smart Contract (reading the pool contract directly). Pick whichever is
most reliable and gives you the data format you need.
### Test before you build
Before constructing the full workflow, verify the data source actually returns
what you expect:
```
1. Create a minimal test workflow with generateWorkflow()
— just a trigger + one data fetch step, nothing else
2. Deploy and run it with executeWorkflow()
3. Check the output with getWorkflowRunById() (set includeWorkflowData: true)
4. If the data looks right → proceed to full build
5. If empty or wrong → try a different approach and test again
```
This saves a lot of debugging later. A deployed workflow with bad data is worse
than no workflow.
## Step 3: Build the Workflow
Now give the K3 orchestrator everything it needs. Use `generateWorkflow()` with
a detailed prompt that includes:
- **Trigger type and schedule** (e.g., "runs daily" or "triggers on wallet activity")
- **Data source and how to query it** (e.g., "use Read Graph to query pool X" or
"use Read Smart Contract to get the pair's reserves")
- **What the AI should analyze** (e.g., "highlight TVL changes over 5%")
- **Any actions to take** (e.g., "execute a swap on Uniswap if condition is met")
- **How to deliver results** (e.g., "send Telegram alert" or "email the report")
- **Any MCP integration IDs** the orchestrator needs (from team integrations)
Set `deployWorkflow: false` on the first call so you can review before deploying.
The orchestrator will likely ask follow-up questions — answer them using
`editGeneratedWorkflow()` with the same `generatedWorkflowId`. This back-and-forth
is normal; expect 2-4 rounds.
Once the configuration looks correct, call `editGeneratedWorkflow()` one final time
with `deployWorkflow: true`.
For the full list of available functions, triggers, AI models, and output options,
read `references/node-types.md`.
## Step 4: Deploy and Verify
After deploying:
1. **Run it manually** with `executeWorkflow()` to trigger an immediate test
2. **Check the run** with `getWorkflowRuns()` or `getWorkflowRunById()`
3. **Verify the full chain**: Did data fetch? Did AI analyze? Did notification send?
If something failed, use `editGeneratedWorkflow()` to fix it — you don't need to
start over. See `references/troubleshooting.md` for common issues.
Tell the user what happened: "Your workflow is live and will run daily. I just ran
a test — here's what the first report looks like: [summary]."
## K3 MCP Tool Reference
| Tool | What it does |
|------|-------------|
| `generateWorkflow` | Start building a workflow from natural language |
| `editGeneratedWorkflow` | Continue the conversation with the orchestrator |
| `executeWorkflow` | Run a workflow manually |
| `getWorkflowById` | Get workflow details and config |
| `getWorkflowRuns` | List execution history |
| `getWorkflowRunById` | Get a specific run's details and output |
| `updateWorkflow` | Pause/unpause a scheduled workflow |
| `findAgentByFunctionality` | Search for existing workflow templates |
| `listAgentTemplates` | Browse all available templates |
| `getAgentTemplateById` | Get details on a specific template |
| `listTeamMcpServerIntegrations` | See what data sources the team has connected |
| `listMcpServerIntegrations` | Browse all available MCP data sources |
## Important Rules
1. **Always test data sources** before building the full workflow. A quick test
fetch saves a lot of debugging time.
2. **The orchestrator is conversational** — expect multiple rounds of back-and-forth
via `editGeneratedWorkflow`. That's how it's designed to work.
3. **Ask the user for anything you can't look up** — never guess email addresses,
Telegram handles, or wallet addresses.
4. **Discover team integrations** — call `listTeamMcpServerIntegrations()` to see
what's available. Every team is different.
5. **Verify workflows work** before telling the user it's done. Run it, check the
output, confirm delivery.
6. **Be mindful of context** — don't call many K3 MCP tools at once or dump large
responses. Fetch what you need, check it, move on.
7. **Use web search** to find API endpoints, subgraph URLs, and smart contract
addresses when you don't know them. The web is your research tool.
## Going Deeper
- `references/node-types.md` — All trigger types, data functions, AI functions,
DeFi/trading actions, and notification options
- `references/data-sources.md` — How to discover and evaluate data sources for
different blockchain data needs
- `references/workflow-patterns.md` — Common workflow architectures and when to
use each one
- `references/troubleshooting.md` — Diagnosing and fixing common workflow issues
don't have the plugin yet? install it then click "run inline in claude" again.