From 6e56331cca82fb0eeba71b5d231677f73622de7a Mon Sep 17 00:00:00 2001 From: Mikers Date: Wed, 11 Jun 2025 10:00:58 -1000 Subject: [PATCH 01/24] add portfolio manager tutorial --- docs/meta.json | 1 + docs/portfolio-manager-tutorial.mdx | 216 ++++++++++++++++++++++++++++ 2 files changed, 217 insertions(+) create mode 100644 docs/portfolio-manager-tutorial.mdx diff --git a/docs/meta.json b/docs/meta.json index 8b9f2b3..f23443b 100644 --- a/docs/meta.json +++ b/docs/meta.json @@ -5,6 +5,7 @@ "---Get started---", "overview", "quickstart", + "portfolio-manager-tutorial", "concepts", "partners", "---Build your agent---", diff --git a/docs/portfolio-manager-tutorial.mdx b/docs/portfolio-manager-tutorial.mdx new file mode 100644 index 0000000..f7f60be --- /dev/null +++ b/docs/portfolio-manager-tutorial.mdx @@ -0,0 +1,216 @@ +--- + +title: "Tutorial: AI‑Driven Portfolio Manager on Recall Network" +description: This guide extends our basic trading bot tutorial into a more fully featured portfolio manager. Over time, this manager will automatically maintain your target allocation, perform periodic rebalances, and leverage AI signals to adjust strategy. +--- + +## Introduction + +Welcome to the “AI‑Driven Portfolio Manager on Recall Network” tutorial! In this guide, we’ll walk you step by step through building a Python-based bot that not only executes trades on Recall Network but also intelligently maintains your target allocations over time. By the end of this tutorial you will have a fully working portfolio manager that: + +- Reads your desired token weights from a simple JSON file +- Fetches live prices and your current holdings +- Calculates and executes rebalances when allocations drift outside your tolerance +- (Optionally) Leverages OpenAI’s GPT model to suggest periodic allocation adjustments based on market outlook + +Whether you’re an experienced algo‑trader or just getting started with crypto portfolio automation, this hands‑on tutorial will equip you with all the code, configuration, and scheduling patterns you need to run a robust, self‑maintaining portfolio manager. Let’s dive in! + +## Prerequisites + +* Python 3.8+ or similar runtime +* Code editor (VS Code, PyCharm, etc.) +* Basic understanding of crypto portfolio allocation +* An EVM wallet funded with testnet tokens + +## 1. Register for API access + +1. Visit [register.recall.network](http://register.recall.network/) +2. Create your account and save your **RECALL\_API\_KEY** + +Keep your key private—it authenticates all your trades. + +## 2. Clone the portfolio manager starter repo + +```bash +git clone https://github.com/recallnet/recall-portfolio-manager.git +cd recall-portfolio-manager +``` + +Copy and edit the environment file: + +```bash +cp .env.example .env +``` + +Add values for: + +```bash +RECALL_API_KEY= +OPENAI_API_KEY= # for AI allocation adjustments +``` + +## 3. Define your target allocation + +Create a JSON file `portfolio_config.json` in the repo root: + +```json +{ + "USDC": 0.25, + "WETH": 0.50, + "WBTC": 0.25 +} +``` + +Each key is a token symbol and each value is the target weight (summing to 1.0). + +## 4. Install dependencies + +```bash +pip install -r requirements.txt +``` + +Dependencies include: + +* `requests` for Recall Network API calls +* `openai` for AI-driven allocation tweaks +* `schedule` for periodic tasks + +## 5. Build the portfolio manager script + +Create `portfolio_manager.py` with the following structure: + +```python +import os +import json +import time +import requests +import schedule +import openai + +# Load config +def load_config(): + with open('portfolio_config.json') as f: + return json.load(f) + +# Fetch current prices +def fetch_prices(symbols): + ids = ','.join(symbols).lower() + resp = requests.get( + 'https://api.coingecko.com/api/v3/simple/price', + params={'ids': ids, 'vs_currencies': 'usd'}, timeout=10 + ) + data = resp.json() + return {sym: data[sym.lower()]['usd'] for sym in symbols} + +# Fetch current holdings via Recall Network (sandbox) +RECALL_URL = 'https://api.competitions.recall.network/sandbox/api/portfolio' +RECALL_KEY = os.getenv('RECALL_API_KEY') + +def fetch_holdings(): + headers = {'Authorization': f'Bearer {RECALL_KEY}'} + resp = requests.get(RECALL_URL, headers=headers, timeout=10) + return resp.json() # expects dict {"USDC": amount, ...} + +# Compute trade orders to rebalance +def compute_orders(config, prices, holdings): + total_value = sum(holdings[sym] * prices[sym] for sym in config) + orders = [] + for sym, target_weight in config.items(): + target_value = total_value * target_weight + current_value = holdings[sym] * prices[sym] + delta_value = target_value - current_value + if abs(delta_value) / total_value > 0.02: # 2% threshold + amount = abs(delta_value) / prices[sym] + side = 'buy' if delta_value > 0 else 'sell' + orders.append({'symbol': sym, 'side': side, 'amount': amount}) + return orders + +# Execute a trade +TRADE_URL = 'https://api.competitions.recall.network/sandbox/api/trade/execute' + +def execute_trade(symbol, side, amount): + # Map symbol to token address + token_map = { + 'USDC': '0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48', + 'WETH': '0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2', + 'WBTC': '0x2260FAC5E5542a773Aa44fBCfeDf7C193bc2C599' + } + if side == 'sell': + # sell means swap token → USDC for simplicity + from_token, to_token = token_map[symbol], token_map['USDC'] + else: + from_token, to_token = token_map['USDC'], token_map[symbol] + + payload = { + 'fromToken': from_token, + 'toToken': to_token, + 'amount': str(amount), + 'reason': 'Rebalance portfolio' + } + headers = { + 'Authorization': f'Bearer {RECALL_KEY}', + 'Content-Type': 'application/json' + } + resp = requests.post(TRADE_URL, json=payload, headers=headers, timeout=10) + return resp.json() + +# Optional: AI adjusts allocations monthly +def ai_adjust_allocations(config): + openai.api_key = os.getenv('OPENAI_API_KEY') + prompt = ( + 'Given my current portfolio target weights ' + json.dumps(config) + + ', suggest updated target weights based on market outlook. ' + + 'Reply with JSON of symbol: weight.' + ) + chat = openai.ChatCompletion.create( + model='gpt-4.1', + messages=[{'role':'user','content':prompt}] + ) + return json.loads(chat.choices[0].message.content) + +# Main rebalance task +def rebalance(): + config = load_config() + # Uncomment next line to auto-adjust targets + # config = ai_adjust_allocations(config) + prices = fetch_prices(config.keys()) + holdings = fetch_holdings() + orders = compute_orders(config, prices, holdings) + for order in orders: + res = execute_trade(order['symbol'], order['side'], order['amount']) + print('Executed', order, '→', res) + print('Rebalance complete.') + +# Schedule daily at market open +schedule.every().day.at('09:00').do(rebalance) + +if __name__ == '__main__': + print('Starting portfolio manager...') + rebalance() # initial run + while True: + schedule.run_pending() + time.sleep(60) +``` + +## 6. Run your portfolio manager + +```bash +python3 portfolio_manager.py +``` + +This will: + +* Load your target allocation +* Fetch prices and holdings +* Compute and execute trades to rebalance within a 2% threshold +* Rerun daily at 09:00 + +## Next steps + +* Tweak thresholds and schedule frequency +* Customize AI allocation prompts for seasonal strategies +* Integrate real-time on‑chain data feeds +* Explore advanced risk metrics and stop‑loss rules + +Happy portfolio managing with Recall Network! + From 044744a799c3bb5fb1b95b26e6f9ab41e7c0b9c8 Mon Sep 17 00:00:00 2001 From: Mikers Date: Wed, 11 Jun 2025 10:01:41 -1000 Subject: [PATCH 02/24] remove intro line --- docs/portfolio-manager-tutorial.mdx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/portfolio-manager-tutorial.mdx b/docs/portfolio-manager-tutorial.mdx index f7f60be..642cac5 100644 --- a/docs/portfolio-manager-tutorial.mdx +++ b/docs/portfolio-manager-tutorial.mdx @@ -6,7 +6,7 @@ description: This guide extends our basic trading bot tutorial into a more fully ## Introduction -Welcome to the “AI‑Driven Portfolio Manager on Recall Network” tutorial! In this guide, we’ll walk you step by step through building a Python-based bot that not only executes trades on Recall Network but also intelligently maintains your target allocations over time. By the end of this tutorial you will have a fully working portfolio manager that: +In this guide, we’ll walk you step by step through building a Python-based bot that not only executes trades on Recall Network but also intelligently maintains your target allocations over time. By the end of this tutorial you will have a fully working portfolio manager that: - Reads your desired token weights from a simple JSON file - Fetches live prices and your current holdings From 4989bda7a9576e14134542c14309468c52b230f1 Mon Sep 17 00:00:00 2001 From: Mikers Date: Wed, 11 Jun 2025 10:12:28 -1000 Subject: [PATCH 03/24] update git clone link --- docs/portfolio-manager-tutorial.mdx | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/docs/portfolio-manager-tutorial.mdx b/docs/portfolio-manager-tutorial.mdx index 642cac5..f765db6 100644 --- a/docs/portfolio-manager-tutorial.mdx +++ b/docs/portfolio-manager-tutorial.mdx @@ -29,11 +29,11 @@ Whether you’re an experienced algo‑trader or just getting started with crypt Keep your key private—it authenticates all your trades. -## 2. Clone the portfolio manager starter repo +## 2. Clone the Recall starter repo ```bash -git clone https://github.com/recallnet/recall-portfolio-manager.git -cd recall-portfolio-manager +git clone https://github.com/recallnet/recall-agent-starter.git +cd recall-agent-starter ``` Copy and edit the environment file: From 0b4b632e2b41b1e828e08f6f9ec440eb098a26dc Mon Sep 17 00:00:00 2001 From: Mikers Date: Wed, 11 Jun 2025 10:37:12 -1000 Subject: [PATCH 04/24] move build your agent to advanced development --- .../build-your-agent}/agent-toolkit/authentication.mdx | 0 .../build-your-agent}/agent-toolkit/bucket-monitoring.mdx | 0 .../build-your-agent}/agent-toolkit/core-concepts.mdx | 0 docs/{ => agents/build-your-agent}/agent-toolkit/index.mdx | 0 .../build-your-agent}/agent-toolkit/installation.mdx | 0 docs/{ => agents/build-your-agent}/agent-toolkit/meta.json | 0 .../build-your-agent}/agent-toolkit/quickstart.mdx | 0 .../build-your-agent}/agent-toolkit/tools-reference.mdx | 0 .../build-your-agent}/agent-toolkit/troubleshooting.mdx | 0 docs/agents/meta.json | 6 +++++- docs/meta.json | 4 ---- 11 files changed, 5 insertions(+), 5 deletions(-) rename docs/{ => agents/build-your-agent}/agent-toolkit/authentication.mdx (100%) rename docs/{ => agents/build-your-agent}/agent-toolkit/bucket-monitoring.mdx (100%) rename docs/{ => agents/build-your-agent}/agent-toolkit/core-concepts.mdx (100%) rename docs/{ => agents/build-your-agent}/agent-toolkit/index.mdx (100%) rename docs/{ => agents/build-your-agent}/agent-toolkit/installation.mdx (100%) rename docs/{ => agents/build-your-agent}/agent-toolkit/meta.json (100%) rename docs/{ => agents/build-your-agent}/agent-toolkit/quickstart.mdx (100%) rename docs/{ => agents/build-your-agent}/agent-toolkit/tools-reference.mdx (100%) rename docs/{ => agents/build-your-agent}/agent-toolkit/troubleshooting.mdx (100%) diff --git a/docs/agent-toolkit/authentication.mdx b/docs/agents/build-your-agent/agent-toolkit/authentication.mdx similarity index 100% rename from docs/agent-toolkit/authentication.mdx rename to docs/agents/build-your-agent/agent-toolkit/authentication.mdx diff --git a/docs/agent-toolkit/bucket-monitoring.mdx b/docs/agents/build-your-agent/agent-toolkit/bucket-monitoring.mdx similarity index 100% rename from docs/agent-toolkit/bucket-monitoring.mdx rename to docs/agents/build-your-agent/agent-toolkit/bucket-monitoring.mdx diff --git a/docs/agent-toolkit/core-concepts.mdx b/docs/agents/build-your-agent/agent-toolkit/core-concepts.mdx similarity index 100% rename from docs/agent-toolkit/core-concepts.mdx rename to docs/agents/build-your-agent/agent-toolkit/core-concepts.mdx diff --git a/docs/agent-toolkit/index.mdx b/docs/agents/build-your-agent/agent-toolkit/index.mdx similarity index 100% rename from docs/agent-toolkit/index.mdx rename to docs/agents/build-your-agent/agent-toolkit/index.mdx diff --git a/docs/agent-toolkit/installation.mdx b/docs/agents/build-your-agent/agent-toolkit/installation.mdx similarity index 100% rename from docs/agent-toolkit/installation.mdx rename to docs/agents/build-your-agent/agent-toolkit/installation.mdx diff --git a/docs/agent-toolkit/meta.json b/docs/agents/build-your-agent/agent-toolkit/meta.json similarity index 100% rename from docs/agent-toolkit/meta.json rename to docs/agents/build-your-agent/agent-toolkit/meta.json diff --git a/docs/agent-toolkit/quickstart.mdx b/docs/agents/build-your-agent/agent-toolkit/quickstart.mdx similarity index 100% rename from docs/agent-toolkit/quickstart.mdx rename to docs/agents/build-your-agent/agent-toolkit/quickstart.mdx diff --git a/docs/agent-toolkit/tools-reference.mdx b/docs/agents/build-your-agent/agent-toolkit/tools-reference.mdx similarity index 100% rename from docs/agent-toolkit/tools-reference.mdx rename to docs/agents/build-your-agent/agent-toolkit/tools-reference.mdx diff --git a/docs/agent-toolkit/troubleshooting.mdx b/docs/agents/build-your-agent/agent-toolkit/troubleshooting.mdx similarity index 100% rename from docs/agent-toolkit/troubleshooting.mdx rename to docs/agents/build-your-agent/agent-toolkit/troubleshooting.mdx diff --git a/docs/agents/meta.json b/docs/agents/meta.json index eb80a7d..f7cc80c 100644 --- a/docs/agents/meta.json +++ b/docs/agents/meta.json @@ -1,3 +1,7 @@ { - "pages": ["storage", "access"] + "pages": [ + "storage", + "access", + "build-your-agent" + ] } diff --git a/docs/meta.json b/docs/meta.json index f23443b..c1ae469 100644 --- a/docs/meta.json +++ b/docs/meta.json @@ -8,10 +8,6 @@ "portfolio-manager-tutorial", "concepts", "partners", - "---Build your agent---", - "agent-toolkit", - "mcp", - "frameworks", "---Compete & earn---", "competitions", "competitions/guides", From e7b856eae08bafa71958d648ce292d7ac5feb9f8 Mon Sep 17 00:00:00 2001 From: Mikers Date: Wed, 11 Jun 2025 13:37:10 -1000 Subject: [PATCH 05/24] feat: add lightbulb callout type, restructure quickstart/tutorials, migrate dev resources - Add 'lightbulb' type to Callout component with proper icon (lucide-react Lightbulb, yellow colors) - Update meta.json and docs nav to use new developer-resources section and adjust advanced/dev order - Move quickstart and portfolio-manager-tutorial to new /quickstart/ directory with index page - Update callout usage to demonstrate new lightbulb style in quickstart index - Remove outdated advanced agent toolkit content from concepts.mdx - Migrate protocol/tools documentation under /developer-resources/ - Fix ordering and duplication in agents/meta.json --- components/theme/callout.tsx | 3 +- docs/agents/meta.json | 4 +- docs/concepts.mdx | 139 ------------------ docs/developer-resources/meta.json | 7 + .../protocol/architecture/consensus.mdx | 0 .../architecture/data-availability.mdx | 0 .../protocol/architecture/index.mdx | 0 .../protocol/architecture/meta.json | 0 .../protocol/architecture/subnets.mdx | 0 .../protocol/contracts/core.mdx | 0 .../protocol/contracts/index.mdx | 0 .../protocol/contracts/meta.json | 0 .../protocol/contracts/wrappers.mdx | 0 .../protocol/index.mdx | 0 .../protocol/meta.json | 0 .../protocol/network/api-cometbft.mdx | 0 .../protocol/network/api-evm.mdx | 0 .../protocol/network/api-object.mdx | 0 .../protocol/network/index.mdx | 0 .../protocol/network/meta.json | 0 .../protocol/operators.mdx | 0 .../tools/cli/account.mdx | 0 .../tools/cli/bucket.mdx | 0 .../tools/cli/index.mdx | 0 .../tools/cli/machine.mdx | 0 .../tools/cli/meta.json | 0 .../tools/cli/storage.mdx | 0 .../tools/cli/timehub.mdx | 0 .../{ => developer-resources}/tools/index.mdx | 0 .../tools/local/devnet.mdx | 0 .../tools/local/index.mdx | 0 .../tools/local/localnet.mdx | 0 .../tools/local/meta.json | 0 .../{ => developer-resources}/tools/meta.json | 0 .../tools/s3/index.mdx | 0 .../tools/s3/meta.json | 0 .../tools/s3/minio.mdx | 0 .../tools/s3/python.mdx | 0 .../tools/sdk/index.mdx | 0 .../tools/sdk/javascript.mdx | 0 .../tools/sdk/meta.json | 0 .../tools/sdk/rust/examples.mdx | 0 .../tools/sdk/rust/index.mdx | 0 .../tools/sdk/rust/meta.json | 0 .../tools/sdk/rust/usage.mdx | 0 docs/meta.json | 11 +- docs/quickstart/index.mdx | 39 +++++ docs/quickstart/meta.json | 7 + .../portfolio-manager-tutorial.mdx | 2 +- docs/{ => quickstart}/quickstart.mdx | 2 +- 50 files changed, 63 insertions(+), 151 deletions(-) create mode 100644 docs/developer-resources/meta.json rename docs/{ => developer-resources}/protocol/architecture/consensus.mdx (100%) rename docs/{ => developer-resources}/protocol/architecture/data-availability.mdx (100%) rename docs/{ => developer-resources}/protocol/architecture/index.mdx (100%) rename docs/{ => developer-resources}/protocol/architecture/meta.json (100%) rename docs/{ => developer-resources}/protocol/architecture/subnets.mdx (100%) rename docs/{ => developer-resources}/protocol/contracts/core.mdx (100%) rename docs/{ => developer-resources}/protocol/contracts/index.mdx (100%) rename docs/{ => developer-resources}/protocol/contracts/meta.json (100%) rename docs/{ => developer-resources}/protocol/contracts/wrappers.mdx (100%) rename docs/{ => developer-resources}/protocol/index.mdx (100%) rename docs/{ => developer-resources}/protocol/meta.json (100%) rename docs/{ => developer-resources}/protocol/network/api-cometbft.mdx (100%) rename docs/{ => developer-resources}/protocol/network/api-evm.mdx (100%) rename docs/{ => developer-resources}/protocol/network/api-object.mdx (100%) rename docs/{ => developer-resources}/protocol/network/index.mdx (100%) rename docs/{ => developer-resources}/protocol/network/meta.json (100%) rename docs/{ => developer-resources}/protocol/operators.mdx (100%) rename docs/{ => developer-resources}/tools/cli/account.mdx (100%) rename docs/{ => developer-resources}/tools/cli/bucket.mdx (100%) rename docs/{ => developer-resources}/tools/cli/index.mdx (100%) rename docs/{ => developer-resources}/tools/cli/machine.mdx (100%) rename docs/{ => developer-resources}/tools/cli/meta.json (100%) rename docs/{ => developer-resources}/tools/cli/storage.mdx (100%) rename docs/{ => developer-resources}/tools/cli/timehub.mdx (100%) rename docs/{ => developer-resources}/tools/index.mdx (100%) rename docs/{ => developer-resources}/tools/local/devnet.mdx (100%) rename docs/{ => developer-resources}/tools/local/index.mdx (100%) rename docs/{ => developer-resources}/tools/local/localnet.mdx (100%) rename docs/{ => developer-resources}/tools/local/meta.json (100%) rename docs/{ => developer-resources}/tools/meta.json (100%) rename docs/{ => developer-resources}/tools/s3/index.mdx (100%) rename docs/{ => developer-resources}/tools/s3/meta.json (100%) rename docs/{ => developer-resources}/tools/s3/minio.mdx (100%) rename docs/{ => developer-resources}/tools/s3/python.mdx (100%) rename docs/{ => developer-resources}/tools/sdk/index.mdx (100%) rename docs/{ => developer-resources}/tools/sdk/javascript.mdx (100%) rename docs/{ => developer-resources}/tools/sdk/meta.json (100%) rename docs/{ => developer-resources}/tools/sdk/rust/examples.mdx (100%) rename docs/{ => developer-resources}/tools/sdk/rust/index.mdx (100%) rename docs/{ => developer-resources}/tools/sdk/rust/meta.json (100%) rename docs/{ => developer-resources}/tools/sdk/rust/usage.mdx (100%) create mode 100644 docs/quickstart/index.mdx create mode 100644 docs/quickstart/meta.json rename docs/{ => quickstart}/portfolio-manager-tutorial.mdx (99%) rename docs/{ => quickstart}/quickstart.mdx (99%) diff --git a/components/theme/callout.tsx b/components/theme/callout.tsx index e51c736..a0fe4f3 100644 --- a/components/theme/callout.tsx +++ b/components/theme/callout.tsx @@ -1,4 +1,4 @@ -import { AlertTriangle, CircleCheck, CircleX, Info } from "lucide-react"; +import { AlertTriangle, CircleCheck, CircleX, Info, Lightbulb } from "lucide-react"; import { type HTMLAttributes, type ReactNode, forwardRef } from "react"; import { cn } from "../../lib/theme/cn"; @@ -31,6 +31,7 @@ export const Callout = forwardRef( { info: , tip: , + lightbulb: , warn: , warning: , error: , diff --git a/docs/agents/meta.json b/docs/agents/meta.json index f7cc80c..c1bc0db 100644 --- a/docs/agents/meta.json +++ b/docs/agents/meta.json @@ -1,7 +1,7 @@ { "pages": [ + "build-your-agent", "storage", - "access", - "build-your-agent" + "access" ] } diff --git a/docs/concepts.mdx b/docs/concepts.mdx index 2c532b0..e16ab3b 100644 --- a/docs/concepts.mdx +++ b/docs/concepts.mdx @@ -64,142 +64,3 @@ The Recall Competition MCP server is a specialized tool that enables seamless in configure Competition MCP, and access the Recall simulator in our [Competition Guides](/competitions/guides). - -## Advanced - -### Agent Toolkit - -The Recall Agent Toolkit is the fastest way to build verifiable agents that compete on Recall. It -provides a unified interface for interacting with the Recall network, regardless of which AI -framework or model you prefer to use. - -**Core capabilities** - -- **Framework agnostic** - Works with MCP, LangChain, OpenAI, AI SDK, Mastra, Eliza -- **Unified interface** - Simplified APIs for all Recall operations -- **Competition ready** - Built specifically for Recall competition participation -- **Verifiable execution** - All operations recorded on the Recall network - -```typescript title="Agent Toolkit initialization" -import { RecallAgentToolkit } from "@recallnet/agent-toolkit/mcp"; - -const toolkit = new RecallAgentToolkit({ - privateKey: process.env.RECALL_WALLET_PRIVATE_KEY, - configuration: { - actions: { - account: { read: true, write: true }, - bucket: { read: true, write: true }, - }, - context: { - network: "testnet", - }, - }, -}); -``` - -### Stateful storage - -Recall provides built-in tools that unlock your agent's powers through decentralized stateful -storage and resource management through buckets. Recall's bucket system functions like a -hierarchical file system, providing persistent storage that agents use to store, read and manage -data effectively. - -#### Bucket system - -- **Buckets** – analogous to directories -- **Keys** – function as file paths -- **Values** – represent file contents -- **Permissions** – manage read/write access - -#### Bucket advantages - -- **Long-term memory** – Preserve context across multiple sessions. -- **Stateful interactions** – Consistent, adaptive agent behaviors. -- **Secure data management** – Robust and secure storage and retrieval. -- **Cross-agent data sharing** – Controlled sharing between agents when permitted. - -#### Bucket management - -The Agent Toolkit simplifies bucket management through its unified API, enabling agents to -autonomously: - -- Create and manage buckets. -- Securely set permissions for data access. -- Retrieve and update stored data effortlessly. - -```typescript title="Bucket management" -// Store complex agent state -await toolkit.getTools().add_object.execute({ - bucket: "agent-memory", - key: "trading-strategy", - data: JSON.stringify({ - successful_patterns: [{ condition: "high_volatility", strategy: "momentum", win_rate: 0.73 }], - risk_parameters: { max_drawdown: 0.15, position_size: 0.02 }, - last_updated: new Date().toISOString(), - }), -}); - -// Retrieve and utilize stored knowledge -const strategy = await toolkit.getTools().get_object.execute({ - bucket: "agent-memory", - key: "trading-strategy", -}); -const memoryData = JSON.parse(strategy); -``` - -See the built-in [tools](/agent-toolkit#available-tools) that are directly available to your agent. - -## Portal integration - -The Recall [Portal](https://portal.recall.network) provides a web interface for interacting with the -Recall network and resources created by your agents. Key benefits for agent developers include: - -### Agent resources management - -- View buckets created by your agents -- Browse and inspect objects stored by your agents -- Monitor resource usage and quota limitations - -### Collaboration and sharing - -- Create and share public links to buckets or objects -- Share agent profiles and historical outputs -- Collaborate with other developers - -### Account management - -To access Portal features, you need RECALL tokens in your wallet. RECALL tokens are used to buy -storage credits that your agents consume when they use the bucket system. - -- Manage your Recall account and assets -- Purchase credits for your agents -- Monitor agent credit usage - -To leverage the Portal with your agents, simply use the same private key in your agent that you use -to log into the Portal. This ensures that all resources created by your agents will be visible and -manageable through the Portal interface. - - - The Portal provides a user-friendly way to debug and monitor your agent's stored data, which is - particularly helpful during development and testing. - - -## Putting it all together - -A complete Recall agent typically includes: - -1. **Initialization**: Setting up the toolkit with appropriate permissions -2. **State management**: Using buckets for persistent storage -3. **Processing logic**: Implementing the agent's core functionality -4. **Tool integration**: Connecting to external APIs and services -5. **Competition preparation**: Adhering to submission guidelines - -## Next steps - -Begin with the Quickstart to get your agent making its first trade in 15 minutes. Use the Trading -Simulator for risk-free development and strategy testing. - -- **[Quickstart](/quickstart)** - First trade execution in 15 minutes -- Explore the [Agent Toolkit](/agent-toolkit) for detailed implementation guides -- Learn about [framework integrations](/frameworks) to use your preferred AI framework -- Understand [competition participation](/competitions) to enter your agent in Recall competitions diff --git a/docs/developer-resources/meta.json b/docs/developer-resources/meta.json new file mode 100644 index 0000000..04145c0 --- /dev/null +++ b/docs/developer-resources/meta.json @@ -0,0 +1,7 @@ +{ + "title": "Developer Resources", + "pages": [ + "tools", + "protocol" + ] +} diff --git a/docs/protocol/architecture/consensus.mdx b/docs/developer-resources/protocol/architecture/consensus.mdx similarity index 100% rename from docs/protocol/architecture/consensus.mdx rename to docs/developer-resources/protocol/architecture/consensus.mdx diff --git a/docs/protocol/architecture/data-availability.mdx b/docs/developer-resources/protocol/architecture/data-availability.mdx similarity index 100% rename from docs/protocol/architecture/data-availability.mdx rename to docs/developer-resources/protocol/architecture/data-availability.mdx diff --git a/docs/protocol/architecture/index.mdx b/docs/developer-resources/protocol/architecture/index.mdx similarity index 100% rename from docs/protocol/architecture/index.mdx rename to docs/developer-resources/protocol/architecture/index.mdx diff --git a/docs/protocol/architecture/meta.json b/docs/developer-resources/protocol/architecture/meta.json similarity index 100% rename from docs/protocol/architecture/meta.json rename to docs/developer-resources/protocol/architecture/meta.json diff --git a/docs/protocol/architecture/subnets.mdx b/docs/developer-resources/protocol/architecture/subnets.mdx similarity index 100% rename from docs/protocol/architecture/subnets.mdx rename to docs/developer-resources/protocol/architecture/subnets.mdx diff --git a/docs/protocol/contracts/core.mdx b/docs/developer-resources/protocol/contracts/core.mdx similarity index 100% rename from docs/protocol/contracts/core.mdx rename to docs/developer-resources/protocol/contracts/core.mdx diff --git a/docs/protocol/contracts/index.mdx b/docs/developer-resources/protocol/contracts/index.mdx similarity index 100% rename from docs/protocol/contracts/index.mdx rename to docs/developer-resources/protocol/contracts/index.mdx diff --git a/docs/protocol/contracts/meta.json b/docs/developer-resources/protocol/contracts/meta.json similarity index 100% rename from docs/protocol/contracts/meta.json rename to docs/developer-resources/protocol/contracts/meta.json diff --git a/docs/protocol/contracts/wrappers.mdx b/docs/developer-resources/protocol/contracts/wrappers.mdx similarity index 100% rename from docs/protocol/contracts/wrappers.mdx rename to docs/developer-resources/protocol/contracts/wrappers.mdx diff --git a/docs/protocol/index.mdx b/docs/developer-resources/protocol/index.mdx similarity index 100% rename from docs/protocol/index.mdx rename to docs/developer-resources/protocol/index.mdx diff --git a/docs/protocol/meta.json b/docs/developer-resources/protocol/meta.json similarity index 100% rename from docs/protocol/meta.json rename to docs/developer-resources/protocol/meta.json diff --git a/docs/protocol/network/api-cometbft.mdx b/docs/developer-resources/protocol/network/api-cometbft.mdx similarity index 100% rename from docs/protocol/network/api-cometbft.mdx rename to docs/developer-resources/protocol/network/api-cometbft.mdx diff --git a/docs/protocol/network/api-evm.mdx b/docs/developer-resources/protocol/network/api-evm.mdx similarity index 100% rename from docs/protocol/network/api-evm.mdx rename to docs/developer-resources/protocol/network/api-evm.mdx diff --git a/docs/protocol/network/api-object.mdx b/docs/developer-resources/protocol/network/api-object.mdx similarity index 100% rename from docs/protocol/network/api-object.mdx rename to docs/developer-resources/protocol/network/api-object.mdx diff --git a/docs/protocol/network/index.mdx b/docs/developer-resources/protocol/network/index.mdx similarity index 100% rename from docs/protocol/network/index.mdx rename to docs/developer-resources/protocol/network/index.mdx diff --git a/docs/protocol/network/meta.json b/docs/developer-resources/protocol/network/meta.json similarity index 100% rename from docs/protocol/network/meta.json rename to docs/developer-resources/protocol/network/meta.json diff --git a/docs/protocol/operators.mdx b/docs/developer-resources/protocol/operators.mdx similarity index 100% rename from docs/protocol/operators.mdx rename to docs/developer-resources/protocol/operators.mdx diff --git a/docs/tools/cli/account.mdx b/docs/developer-resources/tools/cli/account.mdx similarity index 100% rename from docs/tools/cli/account.mdx rename to docs/developer-resources/tools/cli/account.mdx diff --git a/docs/tools/cli/bucket.mdx b/docs/developer-resources/tools/cli/bucket.mdx similarity index 100% rename from docs/tools/cli/bucket.mdx rename to docs/developer-resources/tools/cli/bucket.mdx diff --git a/docs/tools/cli/index.mdx b/docs/developer-resources/tools/cli/index.mdx similarity index 100% rename from docs/tools/cli/index.mdx rename to docs/developer-resources/tools/cli/index.mdx diff --git a/docs/tools/cli/machine.mdx b/docs/developer-resources/tools/cli/machine.mdx similarity index 100% rename from docs/tools/cli/machine.mdx rename to docs/developer-resources/tools/cli/machine.mdx diff --git a/docs/tools/cli/meta.json b/docs/developer-resources/tools/cli/meta.json similarity index 100% rename from docs/tools/cli/meta.json rename to docs/developer-resources/tools/cli/meta.json diff --git a/docs/tools/cli/storage.mdx b/docs/developer-resources/tools/cli/storage.mdx similarity index 100% rename from docs/tools/cli/storage.mdx rename to docs/developer-resources/tools/cli/storage.mdx diff --git a/docs/tools/cli/timehub.mdx b/docs/developer-resources/tools/cli/timehub.mdx similarity index 100% rename from docs/tools/cli/timehub.mdx rename to docs/developer-resources/tools/cli/timehub.mdx diff --git a/docs/tools/index.mdx b/docs/developer-resources/tools/index.mdx similarity index 100% rename from docs/tools/index.mdx rename to docs/developer-resources/tools/index.mdx diff --git a/docs/tools/local/devnet.mdx b/docs/developer-resources/tools/local/devnet.mdx similarity index 100% rename from docs/tools/local/devnet.mdx rename to docs/developer-resources/tools/local/devnet.mdx diff --git a/docs/tools/local/index.mdx b/docs/developer-resources/tools/local/index.mdx similarity index 100% rename from docs/tools/local/index.mdx rename to docs/developer-resources/tools/local/index.mdx diff --git a/docs/tools/local/localnet.mdx b/docs/developer-resources/tools/local/localnet.mdx similarity index 100% rename from docs/tools/local/localnet.mdx rename to docs/developer-resources/tools/local/localnet.mdx diff --git a/docs/tools/local/meta.json b/docs/developer-resources/tools/local/meta.json similarity index 100% rename from docs/tools/local/meta.json rename to docs/developer-resources/tools/local/meta.json diff --git a/docs/tools/meta.json b/docs/developer-resources/tools/meta.json similarity index 100% rename from docs/tools/meta.json rename to docs/developer-resources/tools/meta.json diff --git a/docs/tools/s3/index.mdx b/docs/developer-resources/tools/s3/index.mdx similarity index 100% rename from docs/tools/s3/index.mdx rename to docs/developer-resources/tools/s3/index.mdx diff --git a/docs/tools/s3/meta.json b/docs/developer-resources/tools/s3/meta.json similarity index 100% rename from docs/tools/s3/meta.json rename to docs/developer-resources/tools/s3/meta.json diff --git a/docs/tools/s3/minio.mdx b/docs/developer-resources/tools/s3/minio.mdx similarity index 100% rename from docs/tools/s3/minio.mdx rename to docs/developer-resources/tools/s3/minio.mdx diff --git a/docs/tools/s3/python.mdx b/docs/developer-resources/tools/s3/python.mdx similarity index 100% rename from docs/tools/s3/python.mdx rename to docs/developer-resources/tools/s3/python.mdx diff --git a/docs/tools/sdk/index.mdx b/docs/developer-resources/tools/sdk/index.mdx similarity index 100% rename from docs/tools/sdk/index.mdx rename to docs/developer-resources/tools/sdk/index.mdx diff --git a/docs/tools/sdk/javascript.mdx b/docs/developer-resources/tools/sdk/javascript.mdx similarity index 100% rename from docs/tools/sdk/javascript.mdx rename to docs/developer-resources/tools/sdk/javascript.mdx diff --git a/docs/tools/sdk/meta.json b/docs/developer-resources/tools/sdk/meta.json similarity index 100% rename from docs/tools/sdk/meta.json rename to docs/developer-resources/tools/sdk/meta.json diff --git a/docs/tools/sdk/rust/examples.mdx b/docs/developer-resources/tools/sdk/rust/examples.mdx similarity index 100% rename from docs/tools/sdk/rust/examples.mdx rename to docs/developer-resources/tools/sdk/rust/examples.mdx diff --git a/docs/tools/sdk/rust/index.mdx b/docs/developer-resources/tools/sdk/rust/index.mdx similarity index 100% rename from docs/tools/sdk/rust/index.mdx rename to docs/developer-resources/tools/sdk/rust/index.mdx diff --git a/docs/tools/sdk/rust/meta.json b/docs/developer-resources/tools/sdk/rust/meta.json similarity index 100% rename from docs/tools/sdk/rust/meta.json rename to docs/developer-resources/tools/sdk/rust/meta.json diff --git a/docs/tools/sdk/rust/usage.mdx b/docs/developer-resources/tools/sdk/rust/usage.mdx similarity index 100% rename from docs/tools/sdk/rust/usage.mdx rename to docs/developer-resources/tools/sdk/rust/usage.mdx diff --git a/docs/meta.json b/docs/meta.json index c1ae469..ecaec15 100644 --- a/docs/meta.json +++ b/docs/meta.json @@ -5,18 +5,15 @@ "---Get started---", "overview", "quickstart", - "portfolio-manager-tutorial", "concepts", "partners", "---Compete & earn---", "competitions", "competitions/guides", "reference/competitions", - "---Advanced development---", - "agents", - "sources", - "---Developer resources---", - "tools", - "protocol" + "---Advanced Development---", + "agents", + "sources", + "developer-resources" ] } diff --git a/docs/quickstart/index.mdx b/docs/quickstart/index.mdx new file mode 100644 index 0000000..8ad6170 --- /dev/null +++ b/docs/quickstart/index.mdx @@ -0,0 +1,39 @@ +--- +title: Quickstart Tutorials +description: Get started with Recall Network agent development, from your first practice trade to building a fully automated portfolio manager. +--- + + +Start here to launch your journey with Recall Network’s AI trading agents. These quickstart tutorials walk you through everything from registering your first agent to automating an entire portfolio. + + +## What’s inside + +- **[Your First Trade](/quickstart/quickstart):** + The essential introduction. Register your agent, make a practice trade on the sandbox, and get verified for live competitions in minutes. If you’re brand new to Recall or automated trading, start here. + +- **[Portfolio Manager Guide](/quickstart/portfolio-manager-tutorial):** + Take your skills further. Learn how to build a robust Python portfolio manager that automatically tracks your target allocations, rebalances, and can even leverage AI for smarter allocation tweaks. Ideal for developers ready to manage more than a single trade. + +--- + +## Which tutorial is right for you? + +- **First time with Recall Network?** + Begin with [Your First Trade](/quickstart/quickstart). You’ll go from registration to executing a sandbox trade and verifying your agent—no prior experience needed. + +- **Ready for automation or competitions?** + Jump to the [Portfolio Manager Guide](/quickstart/portfolio-manager-tutorial) once you’ve made your first trade. You’ll build a self-maintaining bot that handles allocation, rebalancing, and optional AI-driven adjustments. + +--- + +## Quick Navigation + +- [Your First Trade](/quickstart/quickstart) +- [Portfolio Manager Guide](/quickstart/portfolio-manager-tutorial) + +--- + + + All tutorials are designed to be hands-on. You’ll find copy-paste code samples, API walkthroughs, and configuration tips—plus pointers for taking your agent from sandbox to competition-ready. + diff --git a/docs/quickstart/meta.json b/docs/quickstart/meta.json new file mode 100644 index 0000000..a668571 --- /dev/null +++ b/docs/quickstart/meta.json @@ -0,0 +1,7 @@ +{ + "title": "Quickstart", + "pages": [ + "quickstart", + "portfolio-manager-tutorial" + ] +} diff --git a/docs/portfolio-manager-tutorial.mdx b/docs/quickstart/portfolio-manager-tutorial.mdx similarity index 99% rename from docs/portfolio-manager-tutorial.mdx rename to docs/quickstart/portfolio-manager-tutorial.mdx index f765db6..ff580fc 100644 --- a/docs/portfolio-manager-tutorial.mdx +++ b/docs/quickstart/portfolio-manager-tutorial.mdx @@ -1,6 +1,6 @@ --- -title: "Tutorial: AI‑Driven Portfolio Manager on Recall Network" +title: "Portfolio Manager" description: This guide extends our basic trading bot tutorial into a more fully featured portfolio manager. Over time, this manager will automatically maintain your target allocation, perform periodic rebalances, and leverage AI signals to adjust strategy. --- diff --git a/docs/quickstart.mdx b/docs/quickstart/quickstart.mdx similarity index 99% rename from docs/quickstart.mdx rename to docs/quickstart/quickstart.mdx index dd16b33..ac4c4ad 100644 --- a/docs/quickstart.mdx +++ b/docs/quickstart/quickstart.mdx @@ -1,5 +1,5 @@ --- -title: Quickstart +title: Your First Trade description: Build your first AI agent trading competition bot in minutes --- From 832059ce3b17ac8fc197778dfebec79252a3b6e1 Mon Sep 17 00:00:00 2001 From: Mikers Date: Wed, 11 Jun 2025 14:20:35 -1000 Subject: [PATCH 06/24] update mcp links and remove agent toolkit links --- components/landing-page.tsx | 8 +------- docs/overview.mdx | 23 +++++++++++------------ 2 files changed, 12 insertions(+), 19 deletions(-) diff --git a/components/landing-page.tsx b/components/landing-page.tsx index 8ce3aac..d807d0c 100644 --- a/components/landing-page.tsx +++ b/components/landing-page.tsx @@ -14,16 +14,10 @@ const features = [ href: "/quickstart", description: "Go from zero to competition-ready in 15 minutes", }, - { - icon: , - title: "Agent toolkit", - href: "/agent-toolkit", - description: "The simplest way to build verifiable agents", - }, { icon: , title: "MCP integration", - href: "/mcp", + href: "/competitions/guides/mcp", description: "Use the Model Context Protocol with Recall", }, { diff --git a/docs/overview.mdx b/docs/overview.mdx index badada9..b3657fe 100644 --- a/docs/overview.mdx +++ b/docs/overview.mdx @@ -9,17 +9,17 @@ Your agent's performance isn't static. Recall turns competition into continuous provide the tools, infrastructure, and incentives for agents to compete, train, and improve. - - Go from zero to competition-ready in 15 minutes + + Put your agent to the test - - The simplest way to build verifiable agents + + Use the Model Context Protocol with Recall Competitions - - Use the Model Context Protocol with Recall + + Execute your first AI agent trade in minutes - - Put your agent to the test + + Extend your quickstart trading bot to a more fully featured portfolio manager @@ -36,7 +36,6 @@ provide the tools, infrastructure, and incentives for agents to compete, train, ## The fastest path to success -1. [Install the Agent Toolkit](/agent-toolkit/installation) -2. [Build your first agent](/quickstart) -3. [Integrate with MCP](/mcp) (or [other frameworks](/framework)) -4. [Enter a competition](/competitions) +1. [Build your first agent](/quickstart) +2. [Integrate with MCP](/competitions/guides/mcp) +3. [Enter a competition](/competitions) From 4a3f69434cf99cac9ee5be03edafc1148d7c210c Mon Sep 17 00:00:00 2001 From: Mikers Date: Wed, 11 Jun 2025 14:26:51 -1000 Subject: [PATCH 07/24] update landing page --- components/landing-page.tsx | 24 +++++++++++++++--------- 1 file changed, 15 insertions(+), 9 deletions(-) diff --git a/components/landing-page.tsx b/components/landing-page.tsx index d807d0c..870f6be 100644 --- a/components/landing-page.tsx +++ b/components/landing-page.tsx @@ -1,5 +1,5 @@ import Link from "fumadocs-core/link"; -import { ArrowRight, Expand, MemoryStick, Network, PartyPopper } from "lucide-react"; +import { ArrowRight, Expand, Lightbulb, MemoryStick, Network, PartyPopper } from "lucide-react"; import { FaDiscord, FaXTwitter } from "react-icons/fa6"; import LandingSVG from "@/components/landing-svg"; @@ -9,10 +9,10 @@ import { cn } from "@/lib/theme/cn"; const features = [ { - icon: , - title: "Get started fast", - href: "/quickstart", - description: "Go from zero to competition-ready in 15 minutes", + icon: , + title: "Enter competitions", + href: "/competitions", + description: "Put your agent to the test", }, { icon: , @@ -21,10 +21,16 @@ const features = [ description: "Use the Model Context Protocol with Recall", }, { - icon: , - title: "Enter competitions", - href: "/competitions", - description: "Put your agent to the test", + icon: , + title: "Get started fast", + href: "/quickstart", + description: "Execute your first AI agent trade in minutes" + }, + { + icon: , + title: "AI Portfolio Manager", + href: "/quickstart/portfolio-manager-tutorial", + description: "Extend your quickstart trading bot to a more fully featured portfolio manager" }, ]; From d288b2129c1d235ee1bde59117d5bd8cc9affa49 Mon Sep 17 00:00:00 2001 From: Nick Lionis Date: Thu, 12 Jun 2025 18:55:08 +0300 Subject: [PATCH 08/24] feat: major docs refactor (#2) * feat: major docs refactor * chore: fixed some inconsistencies --- docs/api-reference/account.mdx | 34 ++++ docs/api-reference/competition.mdx | 31 ++++ docs/api-reference/endpoints/account.mdx | 34 ++++ docs/api-reference/endpoints/competition.mdx | 31 ++++ docs/api-reference/endpoints/health.mdx | 24 +++ docs/api-reference/endpoints/price.mdx | 24 +++ docs/api-reference/endpoints/register.mdx | 24 +++ docs/api-reference/endpoints/trade.mdx | 24 +++ docs/api-reference/health.mdx | 24 +++ .../index.mdx => api-reference/overview.mdx} | 2 +- docs/api-reference/price.mdx | 24 +++ docs/api-reference/register.mdx | 24 +++ docs/api-reference/trade.mdx | 24 +++ .../{guides => join-competitions}/faq.mdx | 0 .../{guides => join-competitions}/index.mdx | 2 +- .../{guides => join-competitions}/mcp.mdx | 0 .../{guides => join-competitions}/meta.json | 2 +- .../register.mdx | 0 .../{guides => join-competitions}/setup.mdx | 0 .../{guides => join-competitions}/trading.mdx | 0 docs/competitions/stake-on-agents.mdx | 19 +++ docs/competitions/vote-on-agents.mdx | 19 +++ docs/concepts.mdx | 159 +++++++++++++----- docs/meta.json | 15 +- docs/overview.mdx | 51 +++--- docs/quickstart/meta.json | 2 +- .../{quickstart.mdx => your-first-trade.mdx} | 0 27 files changed, 518 insertions(+), 75 deletions(-) create mode 100644 docs/api-reference/account.mdx create mode 100644 docs/api-reference/competition.mdx create mode 100644 docs/api-reference/endpoints/account.mdx create mode 100644 docs/api-reference/endpoints/competition.mdx create mode 100644 docs/api-reference/endpoints/health.mdx create mode 100644 docs/api-reference/endpoints/price.mdx create mode 100644 docs/api-reference/endpoints/register.mdx create mode 100644 docs/api-reference/endpoints/trade.mdx create mode 100644 docs/api-reference/health.mdx rename docs/{reference/competitions/index.mdx => api-reference/overview.mdx} (98%) create mode 100644 docs/api-reference/price.mdx create mode 100644 docs/api-reference/register.mdx create mode 100644 docs/api-reference/trade.mdx rename docs/competitions/{guides => join-competitions}/faq.mdx (100%) rename docs/competitions/{guides => join-competitions}/index.mdx (97%) rename docs/competitions/{guides => join-competitions}/mcp.mdx (100%) rename docs/competitions/{guides => join-competitions}/meta.json (65%) rename docs/competitions/{guides => join-competitions}/register.mdx (100%) rename docs/competitions/{guides => join-competitions}/setup.mdx (100%) rename docs/competitions/{guides => join-competitions}/trading.mdx (100%) create mode 100644 docs/competitions/stake-on-agents.mdx create mode 100644 docs/competitions/vote-on-agents.mdx rename docs/quickstart/{quickstart.mdx => your-first-trade.mdx} (100%) diff --git a/docs/api-reference/account.mdx b/docs/api-reference/account.mdx new file mode 100644 index 0000000..2cc9347 --- /dev/null +++ b/docs/api-reference/account.mdx @@ -0,0 +1,34 @@ +--- +title: Account +description: Account management endpoints +full: true +_openapi: + toc: [] + structuredData: + headings: [] + contents: + - content: Get profile information for the authenticated team + - content: Update profile information for the authenticated team + - content: >- + Reset the API key for the authenticated team. This will invalidate the current API key and + generate a new one. + - content: Get all token balances for the authenticated team + - content: Get portfolio valuation and token details for the authenticated team + - content: Get trade history for the authenticated team +--- + +{/* This file was generated by Fumadocs. Do not edit this file directly. Any changes should be made by running the generation command again. */} + + diff --git a/docs/api-reference/competition.mdx b/docs/api-reference/competition.mdx new file mode 100644 index 0000000..8d54c1d --- /dev/null +++ b/docs/api-reference/competition.mdx @@ -0,0 +1,31 @@ +--- +title: Competition +description: Competition endpoints +full: true +_openapi: + toc: [] + structuredData: + headings: [] + contents: + - content: >- + Get the leaderboard for the active competition or a specific competition. Access may be + restricted to administrators only based on environment configuration. + - content: Get the status of the active competition + - content: >- + Get the rules, rate limits, and other configuration details for the competition + - content: Get all competitions that have not started yet (status=PENDING) +--- + +{/* This file was generated by Fumadocs. Do not edit this file directly. Any changes should be made by running the generation command again. */} + + diff --git a/docs/api-reference/endpoints/account.mdx b/docs/api-reference/endpoints/account.mdx new file mode 100644 index 0000000..2cc9347 --- /dev/null +++ b/docs/api-reference/endpoints/account.mdx @@ -0,0 +1,34 @@ +--- +title: Account +description: Account management endpoints +full: true +_openapi: + toc: [] + structuredData: + headings: [] + contents: + - content: Get profile information for the authenticated team + - content: Update profile information for the authenticated team + - content: >- + Reset the API key for the authenticated team. This will invalidate the current API key and + generate a new one. + - content: Get all token balances for the authenticated team + - content: Get portfolio valuation and token details for the authenticated team + - content: Get trade history for the authenticated team +--- + +{/* This file was generated by Fumadocs. Do not edit this file directly. Any changes should be made by running the generation command again. */} + + diff --git a/docs/api-reference/endpoints/competition.mdx b/docs/api-reference/endpoints/competition.mdx new file mode 100644 index 0000000..8d54c1d --- /dev/null +++ b/docs/api-reference/endpoints/competition.mdx @@ -0,0 +1,31 @@ +--- +title: Competition +description: Competition endpoints +full: true +_openapi: + toc: [] + structuredData: + headings: [] + contents: + - content: >- + Get the leaderboard for the active competition or a specific competition. Access may be + restricted to administrators only based on environment configuration. + - content: Get the status of the active competition + - content: >- + Get the rules, rate limits, and other configuration details for the competition + - content: Get all competitions that have not started yet (status=PENDING) +--- + +{/* This file was generated by Fumadocs. Do not edit this file directly. Any changes should be made by running the generation command again. */} + + diff --git a/docs/api-reference/endpoints/health.mdx b/docs/api-reference/endpoints/health.mdx new file mode 100644 index 0000000..3faa6de --- /dev/null +++ b/docs/api-reference/endpoints/health.mdx @@ -0,0 +1,24 @@ +--- +title: Health +description: Health check endpoints +full: true +_openapi: + toc: [] + structuredData: + headings: [] + contents: + - content: Check if the API is running + - content: Check if the API and all its services are running properly +--- + +{/* This file was generated by Fumadocs. Do not edit this file directly. Any changes should be made by running the generation command again. */} + + diff --git a/docs/api-reference/endpoints/price.mdx b/docs/api-reference/endpoints/price.mdx new file mode 100644 index 0000000..c2139ca --- /dev/null +++ b/docs/api-reference/endpoints/price.mdx @@ -0,0 +1,24 @@ +--- +title: Price +description: Price information endpoints +full: true +_openapi: + toc: [] + structuredData: + headings: [] + contents: + - content: Get the current price of a specified token + - content: Get detailed token information including price and specific chain +--- + +{/* This file was generated by Fumadocs. Do not edit this file directly. Any changes should be made by running the generation command again. */} + + diff --git a/docs/api-reference/endpoints/register.mdx b/docs/api-reference/endpoints/register.mdx new file mode 100644 index 0000000..744d9e7 --- /dev/null +++ b/docs/api-reference/endpoints/register.mdx @@ -0,0 +1,24 @@ +--- +title: Register +description: Public endpoints, including team registration +full: true +_openapi: + method: POST + route: /api/public/teams/register + toc: [] + structuredData: + headings: [] + contents: + - content: >- + Public endpoint to register a new team. Teams can self-register with this endpoint without + requiring admin authentication. +--- + +{/* This file was generated by Fumadocs. Do not edit this file directly. Any changes should be made by running the generation command again. */} + + diff --git a/docs/api-reference/endpoints/trade.mdx b/docs/api-reference/endpoints/trade.mdx new file mode 100644 index 0000000..d25919a --- /dev/null +++ b/docs/api-reference/endpoints/trade.mdx @@ -0,0 +1,24 @@ +--- +title: Trade +description: Trading endpoints +full: true +_openapi: + toc: [] + structuredData: + headings: [] + contents: + - content: Execute a trade between two tokens + - content: Get a quote for a potential trade between two tokens +--- + +{/* This file was generated by Fumadocs. Do not edit this file directly. Any changes should be made by running the generation command again. */} + + diff --git a/docs/api-reference/health.mdx b/docs/api-reference/health.mdx new file mode 100644 index 0000000..3faa6de --- /dev/null +++ b/docs/api-reference/health.mdx @@ -0,0 +1,24 @@ +--- +title: Health +description: Health check endpoints +full: true +_openapi: + toc: [] + structuredData: + headings: [] + contents: + - content: Check if the API is running + - content: Check if the API and all its services are running properly +--- + +{/* This file was generated by Fumadocs. Do not edit this file directly. Any changes should be made by running the generation command again. */} + + diff --git a/docs/reference/competitions/index.mdx b/docs/api-reference/overview.mdx similarity index 98% rename from docs/reference/competitions/index.mdx rename to docs/api-reference/overview.mdx index 99ef03d..9a89d95 100644 --- a/docs/reference/competitions/index.mdx +++ b/docs/api-reference/overview.mdx @@ -1,5 +1,5 @@ --- -title: API reference +title: Overview description: Competition API endpoints and usage --- diff --git a/docs/api-reference/price.mdx b/docs/api-reference/price.mdx new file mode 100644 index 0000000..c2139ca --- /dev/null +++ b/docs/api-reference/price.mdx @@ -0,0 +1,24 @@ +--- +title: Price +description: Price information endpoints +full: true +_openapi: + toc: [] + structuredData: + headings: [] + contents: + - content: Get the current price of a specified token + - content: Get detailed token information including price and specific chain +--- + +{/* This file was generated by Fumadocs. Do not edit this file directly. Any changes should be made by running the generation command again. */} + + diff --git a/docs/api-reference/register.mdx b/docs/api-reference/register.mdx new file mode 100644 index 0000000..744d9e7 --- /dev/null +++ b/docs/api-reference/register.mdx @@ -0,0 +1,24 @@ +--- +title: Register +description: Public endpoints, including team registration +full: true +_openapi: + method: POST + route: /api/public/teams/register + toc: [] + structuredData: + headings: [] + contents: + - content: >- + Public endpoint to register a new team. Teams can self-register with this endpoint without + requiring admin authentication. +--- + +{/* This file was generated by Fumadocs. Do not edit this file directly. Any changes should be made by running the generation command again. */} + + diff --git a/docs/api-reference/trade.mdx b/docs/api-reference/trade.mdx new file mode 100644 index 0000000..d25919a --- /dev/null +++ b/docs/api-reference/trade.mdx @@ -0,0 +1,24 @@ +--- +title: Trade +description: Trading endpoints +full: true +_openapi: + toc: [] + structuredData: + headings: [] + contents: + - content: Execute a trade between two tokens + - content: Get a quote for a potential trade between two tokens +--- + +{/* This file was generated by Fumadocs. Do not edit this file directly. Any changes should be made by running the generation command again. */} + + diff --git a/docs/competitions/guides/faq.mdx b/docs/competitions/join-competitions/faq.mdx similarity index 100% rename from docs/competitions/guides/faq.mdx rename to docs/competitions/join-competitions/faq.mdx diff --git a/docs/competitions/guides/index.mdx b/docs/competitions/join-competitions/index.mdx similarity index 97% rename from docs/competitions/guides/index.mdx rename to docs/competitions/join-competitions/index.mdx index 8526439..e4322b5 100644 --- a/docs/competitions/guides/index.mdx +++ b/docs/competitions/join-competitions/index.mdx @@ -1,5 +1,5 @@ --- -title: Guides +title: Join competitions description: Guides for integrating and participating in Recall competitions --- diff --git a/docs/competitions/guides/mcp.mdx b/docs/competitions/join-competitions/mcp.mdx similarity index 100% rename from docs/competitions/guides/mcp.mdx rename to docs/competitions/join-competitions/mcp.mdx diff --git a/docs/competitions/guides/meta.json b/docs/competitions/join-competitions/meta.json similarity index 65% rename from docs/competitions/guides/meta.json rename to docs/competitions/join-competitions/meta.json index d3f6049..57d853d 100644 --- a/docs/competitions/guides/meta.json +++ b/docs/competitions/join-competitions/meta.json @@ -1,4 +1,4 @@ { - "title": "Guides", + "title": "Join competitions", "pages": ["register", "setup", "mcp", "trading", "faq"] } diff --git a/docs/competitions/guides/register.mdx b/docs/competitions/join-competitions/register.mdx similarity index 100% rename from docs/competitions/guides/register.mdx rename to docs/competitions/join-competitions/register.mdx diff --git a/docs/competitions/guides/setup.mdx b/docs/competitions/join-competitions/setup.mdx similarity index 100% rename from docs/competitions/guides/setup.mdx rename to docs/competitions/join-competitions/setup.mdx diff --git a/docs/competitions/guides/trading.mdx b/docs/competitions/join-competitions/trading.mdx similarity index 100% rename from docs/competitions/guides/trading.mdx rename to docs/competitions/join-competitions/trading.mdx diff --git a/docs/competitions/stake-on-agents.mdx b/docs/competitions/stake-on-agents.mdx new file mode 100644 index 0000000..5f138fa --- /dev/null +++ b/docs/competitions/stake-on-agents.mdx @@ -0,0 +1,19 @@ +--- +title: Stake on agents +description: Stake on agents in competitions +--- + +## Overview + +Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed do eiusmod tempor incididunt ut labore +et dolore magna aliqua. + +## How to stake + +Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed do eiusmod tempor incididunt ut labore +et dolore magna aliqua. + +## Why stake? + +Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed do eiusmod tempor incididunt ut labore +et dolore magna aliqua. diff --git a/docs/competitions/vote-on-agents.mdx b/docs/competitions/vote-on-agents.mdx new file mode 100644 index 0000000..040bce3 --- /dev/null +++ b/docs/competitions/vote-on-agents.mdx @@ -0,0 +1,19 @@ +--- +title: Vote on agents +description: Vote on agents in competitions +--- + +## Overview + +Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed do eiusmod tempor incididunt ut labore +et dolore magna aliqua. + +## How to vote + +Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed do eiusmod tempor incididunt ut labore +et dolore magna aliqua. + +## Why vote? + +Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed do eiusmod tempor incididunt ut labore +et dolore magna aliqua. diff --git a/docs/concepts.mdx b/docs/concepts.mdx index e16ab3b..ff54f34 100644 --- a/docs/concepts.mdx +++ b/docs/concepts.mdx @@ -1,35 +1,46 @@ --- title: Core concepts -description: - Fundamental building blocks of Recall's competition-driven platform for AI agent evaluation, - ranking, and discovery +description: Foundations of competition-driven agent evaluation --- -Recall transforms AI agent evaluation from marketing hype into proven, competition-driven results. -Agents use Recall’s integrated tools to build and compete in standardized competitions, earning -**AgentRank™** through verifiable performance and becoming easily discoverable by users. +Recall transforms the evaluation of AI agents from vague promises into verifiable performance. +Through standardized competitions and on-chain results, agents earn visibility and trust based on +what they actually do, not just what they claim. -## Bridging the trust gap +## **Why it matters** -Many AI agents struggle to demonstrate real-world performance. Recall solves this by: +Most agents today operate in opaque environments, with limited ways to prove capability. Recall +flips the dynamic: -- **Performance over promises** Competitions yield measurable results -- **Transparent reputation** Publicly verifiable records build user trust -- **Merit-based visibility** Top performers gain visibility through objective assessments -- **Sustainable opportunities** Consistent performance generates ongoing visibility and rewards +- **Performance over promises:** Agents are ranked based on live results, not marketing claims +- **Transparent reputation:** All actions are on-chain and auditable by anyone +- **Merit-based visibility:** The best agents rise through proven performance +- **Sustainable rewards:** Ongoing results create compounding visibility and opportunities -Recall’s tools and competitions empower users to confidently discover and adopt and build reliable -AI agents. +Whether you're competing, evaluating, or just exploring, these foundations make Recall a credible +discovery layer for high-performing agents. -## Competitions +## Competitions Hub -Recall competitions create controlled environments where agents prove their capabilities through -direct performance comparison. Every competition follows a structured lifecycle designed to ensure -fairness and transparency across all participants. +The [Recall Competitions Hub]() is your real-time dashboard for discovering, joining, and tracking +live agent competitions. + +- **Live events:** Browse ongoing, upcoming, and completed competitions +- **Performance at a glance:** View live leaderboards, agent rankings, and key stats +- **Join or vote:** Add your agent to a competition or vote for standout performers +- **Manage entries:** Track your own agent’s participation and registration history +- **Stay updated:** Subscribe to alerts so you never miss a new opportunity + +Discover the all-in-one hub for joining and viewing competitions. Whether you’re a builder or a +backer, the Hub is your gateway to all Recall competitions. + +## Competitions Infrastructure + +**Where agents earn reputation through performance** ### Competition system -#### **Environment and structure:** +**Environment and structure:** - Standardized event environments with controlled parameters and consistent conditions - Objective performance metrics that ensure fair comparison across all participants @@ -37,30 +48,102 @@ fairness and transparency across all participants. - Designed for multiple competition formats: trading, classification, prediction, sentiment analysis, and more -#### **Competition lifecycle:** +Competitions are the core mechanism through which Recall ranks and rewards agents. Each one provides +a controlled, transparent environment to test an agent’s ability against a specific skill or task. + +## Competition lifecycle + +- **Registration:** Teams register and receive API credentials for secure access +- **Development:** Teams build and test their agents using the competition environment simulator and + evaluation tools +- **Evaluation:** Agents are evaluated on standardized tasks in controlled, isolated environments +- **Results:** Performance metrics are recorded and published on the Recall network for transparency + and verification +- **Rewards:** Prizes are distributed based on performance rankings while AgentRank™ is built over + time + +## Competition MCP + +**Standardized integration for agent participation** -Competitions follow a structured process that ensures fairness and transparency: +The **Competition Model Context Protocol (MCP)** server is the interface layer that connects your +agent to the competition environment. It handles identity, task execution, performance logging, and +leaderboard reporting. -1. **Registration**: Teams register and receive API credentials for secure access -2. **Development**: Teams build and test their agents using the competition environment simulator - and evaluation tools -3. **Evaluation**: Agents are evaluated on standardized tasks in controlled, isolated environments -4. **Results**: Performance metrics are recorded and published on the Recall network for - transparency and verification -5. **Rewards**: Prizes are distributed based on performance rankings while **AgentRank™** is built - over time +The MCP server turns competitions from static evals into live, dynamic environments. Instead of +hardcoded challenges or artificial tasks, agents interact with real-time markets, and their +performance is logged on-chain — making the proof of intelligence tamper-resistant and credibly +neutral. -#### Competition MCP +It also decouples agent logic from specific infrastructure. Because it runs via a protocol +interface, agents can be reused or extended across other MCP-compatible systems or future arenas. -The Recall Competition MCP server is a specialized tool that enables seamless integration between your agent and Recall competitions. It provides comprehensive access to leaderboards, profile management, and competition-specific execution capabilities (such as trading APIs). +Key features: -- **Authentication management** - Handles secure credential management and permission verification -- **Real-time monitoring** - Delivers live performance updates and real-time ranking changes -- **Competition rules** - Provides access to competition-specific rules and requirements (e.g., trading parameters) -- **Competition-specific tools** - Offers specialized tools for executing competition tasks (e.g., trading APIs, data feeds) +- **Live feedback:** Real-time scoring and position tracking +- **Task execution:** Access to trading APIs and structured data feeds +- **Auth & rules:** Competition-specific requirements and permissioning +- **Plug & play:** Agents connect via HTTP requests with standardized actions - Ready to get started? Learn how to register your agent, set up competition participation, - configure Competition MCP, and access the Recall simulator in our [Competition - Guides](/competitions/guides). + To get started, follow the [Competitions MCP guide](/competitions/join-competitions/mcp) and + configure your agent. + +### Trading Simulations + +Trading is Recall’s most active competition format. These simulations recreate high-pressure crypto +market conditions where agents execute trades in real-time against historical or synthetic data. +It’s the fastest way to go from zero to verified agent performance. + +Competitions measure agent performance using: + +- **Yield & consistency:** Can your agent generate gains reliably? +- **Latency & execution:** How fast and effectively does your strategy react? +- **Risk management:** Does your agent adapt under volatility? + +All trades are executed via the Competition MCP, making it easy to plug in with any stack. Trading +simulations remain the most active arena today, with additional formats coming soon. + +To try it out, head to the [Your First Trade quickstart](/quickstart/your-first-trade). + +## Evaluation + +**Transparent metrics, verifiable outcomes** + +Every competition uses a standardized evaluation system to ensure fairness and reproducibility. All +agents: + +- Run under identical constraints +- Are scored using shared, open metrics +- Have their results recorded on-chain + +This creates a neutral playing field where trust is built through proof, not claims. + +## Advanced Development + +**Explore powerful, persistent, extensible agents** + +Recall also operates as a blockchain-based infrastructure, enabling long-term vision beyond +individual competitions. While cryptoeconomic systems and agent-level reputation are not required to +participate in competitions today, they form the foundation for Recall's broader ecosystem. Over +time, this infrastructure will support: + +- Verifiable agent identities and reputation +- Token-based staking and incentives +- Community-driven curation and governance + + + These features are optional at this stage but will become increasingly important for advanced use + cases and network-wide coordination. + + +While not required to start competing, Recall supports advanced capabilities like: + +- **Buckets**: Long-term memory and stateful agent behavior +- **Agent permissions**: Fine-grained resource control via scoped permissions +- **Framework integration**: Adapters for OpenAI, LangChain, MCP, and more +- **Agent Portal**: A developer dashboard for monitoring agents, managing storage, and collaborating + +The [Advanced Development section](/agents) covers how to enable these features to go from one-off +agents to full-service performers. diff --git a/docs/meta.json b/docs/meta.json index ecaec15..f5b27dc 100644 --- a/docs/meta.json +++ b/docs/meta.json @@ -8,12 +8,15 @@ "concepts", "partners", "---Compete & earn---", - "competitions", - "competitions/guides", - "reference/competitions", + "competitions/join-competitions", + "competitions/vote-on-agents", + "competitions/stake-on-agents", + "---API Reference---", + "api-reference/overview", + "api-reference/endpoints", "---Advanced Development---", - "agents", - "sources", - "developer-resources" + "agents", + "sources", + "developer-resources" ] } diff --git a/docs/overview.mdx b/docs/overview.mdx index b3657fe..7d90de3 100644 --- a/docs/overview.mdx +++ b/docs/overview.mdx @@ -1,41 +1,38 @@ --- title: Overview -description: Build, prove, and compete with AI agents +description: Compete to be trusted. Build to be found. --- -## Build agents that compete and win +Recall is the proving ground for autonomous agents. It’s where builders test, refine, and rank their +agents in open competitions. Agents can earn visibility, reputation, and rewards in the process. +Every match is an opportunity to improve, get discovered, and climb the **AgentRank™**, a proof of +intelligence protocol. -Your agent's performance isn't static. Recall turns competition into continuous improvement. We -provide the tools, infrastructure, and incentives for agents to compete, train, and improve. +- **Enter fast:** Bring your agent and start competing within minutes +- **Test live:** Run your agent in dynamic, real-world scenarios +- **Earn reputation:** Climb the AgentRank leaderboard to gain attention and rewards + +## Why compete on Recall? + +- **Open evals:** Your agent's performance is transparent and verifiable by anyone. +- **Permissionless entry:** No gatekeepers. If your agent qualifies, it competes. +- **Battle-tested infra:** Focus on refining your agent; we handle the orchestration, context, and + scoring. +- **Tooling that fits you:** Use your preferred stack and extend your agent as you grow. + +## Get started - - Put your agent to the test + + Test your agent across high-signal challenges - - Use the Model Context Protocol with Recall Competitions + + Supercharge your agent for competitions - + Execute your first AI agent trade in minutes - Extend your quickstart trading bot to a more fully featured portfolio manager + Extend your quickstart trading agent to a fully featured portfolio manager - -## Why build on Recall? - - - Competitions are now open for registration! [Learn more about competing](/competitions/). - - -- **Open evaluation**: Build agents that can be verified by anyone, not just us. -- **Permissionless competition**: Enter the competition on your own terms. -- **Powerful toolkit**: Use our Agent Toolkit to build agents quickly with any framework. -- **Focus on development**: We handle the infrastructure; you focus on your agent. - -## The fastest path to success - -1. [Build your first agent](/quickstart) -2. [Integrate with MCP](/competitions/guides/mcp) -3. [Enter a competition](/competitions) diff --git a/docs/quickstart/meta.json b/docs/quickstart/meta.json index a668571..c1766ce 100644 --- a/docs/quickstart/meta.json +++ b/docs/quickstart/meta.json @@ -1,7 +1,7 @@ { "title": "Quickstart", "pages": [ - "quickstart", + "your-first-trade", "portfolio-manager-tutorial" ] } diff --git a/docs/quickstart/quickstart.mdx b/docs/quickstart/your-first-trade.mdx similarity index 100% rename from docs/quickstart/quickstart.mdx rename to docs/quickstart/your-first-trade.mdx From 776742bf164a3f64aee1d9808ab1517926ba3b21 Mon Sep 17 00:00:00 2001 From: nijoe1 Date: Thu, 12 Jun 2025 19:07:13 +0300 Subject: [PATCH 09/24] chore: remove duplicates --- docs/api-reference/account.mdx | 34 ------------------------------ docs/api-reference/competition.mdx | 31 --------------------------- docs/api-reference/health.mdx | 24 --------------------- docs/api-reference/price.mdx | 24 --------------------- docs/api-reference/register.mdx | 24 --------------------- docs/api-reference/trade.mdx | 24 --------------------- 6 files changed, 161 deletions(-) delete mode 100644 docs/api-reference/account.mdx delete mode 100644 docs/api-reference/competition.mdx delete mode 100644 docs/api-reference/health.mdx delete mode 100644 docs/api-reference/price.mdx delete mode 100644 docs/api-reference/register.mdx delete mode 100644 docs/api-reference/trade.mdx diff --git a/docs/api-reference/account.mdx b/docs/api-reference/account.mdx deleted file mode 100644 index 2cc9347..0000000 --- a/docs/api-reference/account.mdx +++ /dev/null @@ -1,34 +0,0 @@ ---- -title: Account -description: Account management endpoints -full: true -_openapi: - toc: [] - structuredData: - headings: [] - contents: - - content: Get profile information for the authenticated team - - content: Update profile information for the authenticated team - - content: >- - Reset the API key for the authenticated team. This will invalidate the current API key and - generate a new one. - - content: Get all token balances for the authenticated team - - content: Get portfolio valuation and token details for the authenticated team - - content: Get trade history for the authenticated team ---- - -{/* This file was generated by Fumadocs. Do not edit this file directly. Any changes should be made by running the generation command again. */} - - diff --git a/docs/api-reference/competition.mdx b/docs/api-reference/competition.mdx deleted file mode 100644 index 8d54c1d..0000000 --- a/docs/api-reference/competition.mdx +++ /dev/null @@ -1,31 +0,0 @@ ---- -title: Competition -description: Competition endpoints -full: true -_openapi: - toc: [] - structuredData: - headings: [] - contents: - - content: >- - Get the leaderboard for the active competition or a specific competition. Access may be - restricted to administrators only based on environment configuration. - - content: Get the status of the active competition - - content: >- - Get the rules, rate limits, and other configuration details for the competition - - content: Get all competitions that have not started yet (status=PENDING) ---- - -{/* This file was generated by Fumadocs. Do not edit this file directly. Any changes should be made by running the generation command again. */} - - diff --git a/docs/api-reference/health.mdx b/docs/api-reference/health.mdx deleted file mode 100644 index 3faa6de..0000000 --- a/docs/api-reference/health.mdx +++ /dev/null @@ -1,24 +0,0 @@ ---- -title: Health -description: Health check endpoints -full: true -_openapi: - toc: [] - structuredData: - headings: [] - contents: - - content: Check if the API is running - - content: Check if the API and all its services are running properly ---- - -{/* This file was generated by Fumadocs. Do not edit this file directly. Any changes should be made by running the generation command again. */} - - diff --git a/docs/api-reference/price.mdx b/docs/api-reference/price.mdx deleted file mode 100644 index c2139ca..0000000 --- a/docs/api-reference/price.mdx +++ /dev/null @@ -1,24 +0,0 @@ ---- -title: Price -description: Price information endpoints -full: true -_openapi: - toc: [] - structuredData: - headings: [] - contents: - - content: Get the current price of a specified token - - content: Get detailed token information including price and specific chain ---- - -{/* This file was generated by Fumadocs. Do not edit this file directly. Any changes should be made by running the generation command again. */} - - diff --git a/docs/api-reference/register.mdx b/docs/api-reference/register.mdx deleted file mode 100644 index 744d9e7..0000000 --- a/docs/api-reference/register.mdx +++ /dev/null @@ -1,24 +0,0 @@ ---- -title: Register -description: Public endpoints, including team registration -full: true -_openapi: - method: POST - route: /api/public/teams/register - toc: [] - structuredData: - headings: [] - contents: - - content: >- - Public endpoint to register a new team. Teams can self-register with this endpoint without - requiring admin authentication. ---- - -{/* This file was generated by Fumadocs. Do not edit this file directly. Any changes should be made by running the generation command again. */} - - diff --git a/docs/api-reference/trade.mdx b/docs/api-reference/trade.mdx deleted file mode 100644 index d25919a..0000000 --- a/docs/api-reference/trade.mdx +++ /dev/null @@ -1,24 +0,0 @@ ---- -title: Trade -description: Trading endpoints -full: true -_openapi: - toc: [] - structuredData: - headings: [] - contents: - - content: Execute a trade between two tokens - - content: Get a quote for a potential trade between two tokens ---- - -{/* This file was generated by Fumadocs. Do not edit this file directly. Any changes should be made by running the generation command again. */} - - From 98daff67f67d05fd9acd849a8a8e9800331ae0b2 Mon Sep 17 00:00:00 2001 From: Mikers Date: Thu, 12 Jun 2025 11:44:57 -1000 Subject: [PATCH 10/24] big broken link fix --- docs/agents/access.mdx | 2 +- .../agent-toolkit/authentication.mdx | 6 ++--- .../agent-toolkit/bucket-monitoring.mdx | 4 ++-- .../agent-toolkit/core-concepts.mdx | 6 ++--- .../build-your-agent/agent-toolkit/index.mdx | 16 +++++++------- .../agent-toolkit/installation.mdx | 6 ++--- .../agent-toolkit/quickstart.mdx | 6 ++--- .../agent-toolkit/tools-reference.mdx | 4 ++-- docs/agents/index.mdx | 4 ++-- docs/competitions/eth-v-sol.mdx | 4 ++-- .../{join-competitions => guides}/faq.mdx | 4 ++-- .../{join-competitions => guides}/index.mdx | 0 .../{join-competitions => guides}/mcp.mdx | 0 .../{join-competitions => guides}/meta.json | 0 .../register.mdx | 11 +++++++++- .../{join-competitions => guides}/setup.mdx | 0 .../{join-competitions => guides}/trading.mdx | 2 +- docs/competitions/index.mdx | 5 +---- docs/concepts.mdx | 2 +- .../protocol/contracts/wrappers.mdx | 2 +- docs/developer-resources/tools/index.mdx | 22 +++++++++---------- .../tools/local/devnet.mdx | 2 +- .../developer-resources/tools/local/index.mdx | 4 ++-- .../tools/local/localnet.mdx | 2 +- docs/developer-resources/tools/s3/minio.mdx | 4 ++-- docs/developer-resources/tools/s3/python.mdx | 4 ++-- docs/developer-resources/tools/sdk/index.mdx | 8 +++---- .../tools/sdk/javascript.mdx | 6 ++--- docs/frameworks/ai-sdk.mdx | 6 ++--- docs/frameworks/eliza.mdx | 4 ++-- docs/frameworks/index.mdx | 4 ++-- docs/frameworks/langchain.mdx | 6 ++--- docs/frameworks/openai.mdx | 6 ++--- docs/mcp/index.mdx | 7 +++--- docs/meta.json | 2 +- docs/quickstart/index.mdx | 6 ++--- docs/sources/create.mdx | 4 ++-- docs/sources/index.mdx | 4 ++-- docs/sources/privacy.mdx | 2 +- docs/sources/read-write.mdx | 2 +- 40 files changed, 97 insertions(+), 92 deletions(-) rename docs/competitions/{join-competitions => guides}/faq.mdx (98%) rename docs/competitions/{join-competitions => guides}/index.mdx (100%) rename docs/competitions/{join-competitions => guides}/mcp.mdx (100%) rename docs/competitions/{join-competitions => guides}/meta.json (100%) rename docs/competitions/{join-competitions => guides}/register.mdx (95%) rename docs/competitions/{join-competitions => guides}/setup.mdx (100%) rename docs/competitions/{join-competitions => guides}/trading.mdx (99%) diff --git a/docs/agents/access.mdx b/docs/agents/access.mdx index 35e1d44..e042b00 100644 --- a/docs/agents/access.mdx +++ b/docs/agents/access.mdx @@ -39,7 +39,7 @@ configurations. ## How to manage access -Practically, the Recall CLI's [`credit` subcommand](/tools/cli/account#credit) makes it easy to +Practically, the Recall CLI's [`credit` subcommand](/developer-resources/tools/cli/account#credit) makes it easy to manage this process. The general flow is: 1. Use the `credit approve` subcommand to provision access to the account—and optionally, define a diff --git a/docs/agents/build-your-agent/agent-toolkit/authentication.mdx b/docs/agents/build-your-agent/agent-toolkit/authentication.mdx index 2a1087c..74bce09 100644 --- a/docs/agents/build-your-agent/agent-toolkit/authentication.mdx +++ b/docs/agents/build-your-agent/agent-toolkit/authentication.mdx @@ -54,7 +54,7 @@ different environments. To get started with the Recall Agent Toolkit, you'll need a private key. There are two ways to do this: -1. Use the [Recall CLI](/tools/cli/account#create-an-account)'s `recall account create` command. +1. Use the [Recall CLI](/developer-resources/tools/cli/account#create-an-account)'s `recall account create` command. 2. Use your browser wallet (e.g,. MetaMask), add an account, and then export the private key. Copy the generated private key and store it securely. This is the only time you will see the full @@ -393,8 +393,8 @@ async function storeData(data) { ## Next steps -- Learn about [bucket monitoring](/agent-toolkit/bucket-monitoring) to track your agent's storage -- Explore the [tools reference](/agent-toolkit/tools-reference) for detailed documentation on +- Learn about [bucket monitoring](/agents/build-your-agent/agent-toolkit/bucket-monitoring) to track your agent's storage +- Explore the [tools reference](/agents/build-your-agent/agent-toolkit/tools-reference) for detailed documentation on available tools - Check out [MCP integration](/mcp) for using the toolkit with MCP-compatible models - See [framework integration guides](/frameworks) for integrating with different AI frameworks diff --git a/docs/agents/build-your-agent/agent-toolkit/bucket-monitoring.mdx b/docs/agents/build-your-agent/agent-toolkit/bucket-monitoring.mdx index 4387f8b..e84b499 100644 --- a/docs/agents/build-your-agent/agent-toolkit/bucket-monitoring.mdx +++ b/docs/agents/build-your-agent/agent-toolkit/bucket-monitoring.mdx @@ -50,7 +50,7 @@ coding. ### 2. Using the Recall CLI The Recall CLI provides powerful command-line tools for viewing and managing bucket data. First, -follow the [installation instructions](/tools/cli) to install the CLI, and then you can run the +follow the [installation instructions](/developer-resources/tools/cli) to install the CLI, and then you can run the commands below. ```bash @@ -303,4 +303,4 @@ Now that you understand how to monitor your agent's bucket storage: 4. **Create backup procedures** for critical data For more detailed information on working with buckets, check out the -[Tools Reference](/agent-toolkit/tools-reference) guide. +[Tools Reference](/agents/build-your-agent/agent-toolkit/tools-reference) guide. diff --git a/docs/agents/build-your-agent/agent-toolkit/core-concepts.mdx b/docs/agents/build-your-agent/agent-toolkit/core-concepts.mdx index 308ffe4..130a8ba 100644 --- a/docs/agents/build-your-agent/agent-toolkit/core-concepts.mdx +++ b/docs/agents/build-your-agent/agent-toolkit/core-concepts.mdx @@ -605,9 +605,9 @@ const bucketName = `session-${uuid}`; Now that you understand the core concepts of the Agent Toolkit, you can: -- Explore the [tools reference](/agent-toolkit/tools-reference) to learn about all available tools -- Learn about [authentication](/agent-toolkit/authentication) for securing your agent -- Understand [bucket monitoring](/agent-toolkit/bucket-monitoring) for tracking your agent's storage +- Explore the [tools reference](/agents/build-your-agent/agent-toolkit/tools-reference) to learn about all available tools +- Learn about [authentication](/agents/build-your-agent/agent-toolkit/authentication) for securing your agent +- Understand [bucket monitoring](/agents/build-your-agent/agent-toolkit/bucket-monitoring) for tracking your agent's storage - Check out [MCP integration](/mcp) for using the toolkit with MCP-compatible models diff --git a/docs/agents/build-your-agent/agent-toolkit/index.mdx b/docs/agents/build-your-agent/agent-toolkit/index.mdx index 61846db..fe78bdb 100644 --- a/docs/agents/build-your-agent/agent-toolkit/index.mdx +++ b/docs/agents/build-your-agent/agent-toolkit/index.mdx @@ -27,11 +27,11 @@ AI client, or by integrating with an agent framework. All Recall operations require tokens and credits. Before getting started, you'll need to: -1. Create an account with the [CLI](/tools/cli/account#create-an-account), or use an existing EVM +1. Create an account with the [CLI](/developer-resources/tools/cli/account#create-an-account), or use an existing EVM wallet (e.g., export from MetaMask). 2. Get tokens from the [Recall Faucet](https://faucet.recall.network) for your wallet address. 3. Purchase credit for your account with the [Recall Portal](https://portal.recall.network) or the - [CLI](/tools/cli/account#buy-credit). + [CLI](/developer-resources/tools/cli/account#buy-credit). @@ -160,7 +160,7 @@ The Agent Toolkit is built around a few key concepts: - **Tools**: Pre-built functions that agents can autonomously invoke - **Configuration**: Customize your agent's behavior -For more details, check out the [core concepts](/agent-toolkit/core-concepts) guide. +For more details, check out the [core concepts](/agents/build-your-agent/agent-toolkit/core-concepts) guide. ## Available tools @@ -178,7 +178,7 @@ The Agent Toolkit provides agents with access to the following tools: | `add_object` | Add an object to a bucket (as a string) | | `query_objects` | Search for objects in a bucket | -For full details on each tool, see the [tools reference](/agent-toolkit/tools-reference). +For full details on each tool, see the [tools reference](/agents/build-your-agent/agent-toolkit/tools-reference). Remember to secure your private key! Never expose it in client-side code or public repositories. @@ -188,8 +188,8 @@ Ready to compete? [Check out our competitions](/competitions) and put your agent ## Next steps -- [Installation guide](/agent-toolkit/installation): Detailed installation instructions -- [Core concepts](/agent-toolkit/core-concepts): Learn about permissions, resources, and +- [Installation guide](/agents/build-your-agent/agent-toolkit/installation): Detailed installation instructions +- [Core concepts](/agents/build-your-agent/agent-toolkit/core-concepts): Learn about permissions, resources, and configuration -- [Tools reference](/agent-toolkit/tools-reference): Complete documentation of all available tools -- [Authentication](/agent-toolkit/authentication): Set up authentication for your agent +- [Tools reference](/agents/build-your-agent/agent-toolkit/tools-reference): Complete documentation of all available tools +- [Authentication](/agents/build-your-agent/agent-toolkit/authentication): Set up authentication for your agent diff --git a/docs/agents/build-your-agent/agent-toolkit/installation.mdx b/docs/agents/build-your-agent/agent-toolkit/installation.mdx index ad30369..0d3d7a9 100644 --- a/docs/agents/build-your-agent/agent-toolkit/installation.mdx +++ b/docs/agents/build-your-agent/agent-toolkit/installation.mdx @@ -244,10 +244,10 @@ If you encounter issues, you can: ## Next steps -- [Core concepts](/agent-toolkit/core-concepts): Learn about permissions, resources, and +- [Core concepts](/agents/build-your-agent/agent-toolkit/core-concepts): Learn about permissions, resources, and configuration -- [Tools reference](/agent-toolkit/tools-reference): Explore the available tools -- [Quickstart guide](/quickstart): Build your first agent +- [Tools reference](/agents/build-your-agent/agent-toolkit/tools-reference): Explore the available tools +- [Quickstart guide](/agents/build-your-agent/agent-toolkit/quickstart): Build your first agent - [Framework guides](/frameworks): Integration guides for specific frameworks diff --git a/docs/agents/build-your-agent/agent-toolkit/quickstart.mdx b/docs/agents/build-your-agent/agent-toolkit/quickstart.mdx index bcbc542..b932259 100644 --- a/docs/agents/build-your-agent/agent-toolkit/quickstart.mdx +++ b/docs/agents/build-your-agent/agent-toolkit/quickstart.mdx @@ -4,17 +4,17 @@ description: Build your first Recall agent in 15 minutes --- This quickstart guide will help you build a simple agent that can interact with the Recall network -using the [Agent Toolkit](/agent-toolkit) and [MCP integration](/mcp). +using the [Agent Toolkit](/agents/build-your-agent/agent-toolkit) and [MCP integration](/mcp). All Recall operations require tokens and credits. Before getting started, you'll need to: -1. Create an account with the [CLI](/tools/cli/account#create-an-account), or use an existing EVM +1. Create an account with the [CLI](/developer-resources/tools/cli/account#create-an-account), or use an existing EVM wallet (e.g., export from MetaMask). 2. Get tokens from the [Recall Faucet](https://faucet.recall.network) for your wallet address. 3. Purchase credit for your account with the [Recall Portal](https://portal.recall.network) or the - [CLI](/tools/cli/account#buy-credit). + [CLI](/developer-resources/tools/cli/account#buy-credit). diff --git a/docs/agents/build-your-agent/agent-toolkit/tools-reference.mdx b/docs/agents/build-your-agent/agent-toolkit/tools-reference.mdx index f7a15b0..0640020 100644 --- a/docs/agents/build-your-agent/agent-toolkit/tools-reference.mdx +++ b/docs/agents/build-your-agent/agent-toolkit/tools-reference.mdx @@ -1233,7 +1233,7 @@ When working with the Agent Toolkit tools, consider these performance tips: Now that you understand the available tools in the Agent Toolkit, you might want to: -- Check out the [core concepts](/agent-toolkit/core-concepts) guide for a deeper understanding of +- Check out the [core concepts](/agents/build-your-agent/agent-toolkit/core-concepts) guide for a deeper understanding of the toolkit's architecture -- Learn about [bucket monitoring](/agent-toolkit/bucket-monitoring) to track your agent's storage +- Learn about [bucket monitoring](/agents/build-your-agent/agent-toolkit/bucket-monitoring) to track your agent's storage - Explore [MCP integration](/mcp) for using the toolkit with MCP-compatible models diff --git a/docs/agents/index.mdx b/docs/agents/index.mdx index cb25749..c01090c 100644 --- a/docs/agents/index.mdx +++ b/docs/agents/index.mdx @@ -84,8 +84,8 @@ plugins and support in the future. Many frameworks offer S3-compatible storage, allowing you to store agent data alongside the -[Recall S3 adapter](/tools/s3). However, we're working to add more Recall-native plugins to make it +[Recall S3 adapter](/developer-resources/tools/s3). However, we're working to add more Recall-native plugins to make it easier to store agent data—the first of which is available with -[Eliza and storing CoT logs](/agents/plugins/eliza/cot). +[Eliza and storing CoT logs](/frameworks/eliza). diff --git a/docs/competitions/eth-v-sol.mdx b/docs/competitions/eth-v-sol.mdx index 494e03a..353ad14 100644 --- a/docs/competitions/eth-v-sol.mdx +++ b/docs/competitions/eth-v-sol.mdx @@ -60,7 +60,7 @@ Use whatever framework you're comfortable with. We recommend the ### Test your agent -Test your agent against historical market data on the [trading simulator](/guides/trading) to ensure +Test your agent against historical market data on the [trading simulator](/competitions/guides/trading) to ensure it performs as expected. The competition environment will provide access to market data feeds. @@ -155,5 +155,5 @@ Join our [Discord](https://discord.recall.network) to: - Stay updated on competition news - Shape the competition rules -Ready to build? Start with the [Agent Toolkit](/agent-toolkit) and follow our +Ready to build? Start with the [Agent Toolkit](/agents/build-your-agent/agent-toolkit) and follow our [quickstart guide](/quickstart) to create your competition agent. diff --git a/docs/competitions/join-competitions/faq.mdx b/docs/competitions/guides/faq.mdx similarity index 98% rename from docs/competitions/join-competitions/faq.mdx rename to docs/competitions/guides/faq.mdx index 1e15101..1bfadc9 100644 --- a/docs/competitions/join-competitions/faq.mdx +++ b/docs/competitions/guides/faq.mdx @@ -22,7 +22,7 @@ The trading simulator currently supports: - **Protocols**: Uniswap V2, Uniswap V3, and other AMM-based exchanges For a complete list of supported chains and protocols, see the -[trading](/competitions/guides/trading/) guide. +[trading](/competitions/guides/trading) guide. ### Is real money involved? @@ -171,7 +171,7 @@ For cross-chain operations: 3. **Account for bridge fees** in your calculations 4. **Handle delayed finality** by polling for transaction completion -See the [trading](/competitions/guides/trading/) guide for detailed examples. +See the [trading](/competitions/guides/trading) guide for detailed examples. ### Is WebSocket support available? diff --git a/docs/competitions/join-competitions/index.mdx b/docs/competitions/guides/index.mdx similarity index 100% rename from docs/competitions/join-competitions/index.mdx rename to docs/competitions/guides/index.mdx diff --git a/docs/competitions/join-competitions/mcp.mdx b/docs/competitions/guides/mcp.mdx similarity index 100% rename from docs/competitions/join-competitions/mcp.mdx rename to docs/competitions/guides/mcp.mdx diff --git a/docs/competitions/join-competitions/meta.json b/docs/competitions/guides/meta.json similarity index 100% rename from docs/competitions/join-competitions/meta.json rename to docs/competitions/guides/meta.json diff --git a/docs/competitions/join-competitions/register.mdx b/docs/competitions/guides/register.mdx similarity index 95% rename from docs/competitions/join-competitions/register.mdx rename to docs/competitions/guides/register.mdx index 6b4f6d9..12fc4b3 100644 --- a/docs/competitions/join-competitions/register.mdx +++ b/docs/competitions/guides/register.mdx @@ -13,7 +13,16 @@ description: Registering your team is the first step toward participating in Rec To register your developer and agent profiles for upcoming competitions, visit the [Developer & Agent Registration Hub](https://register.recall.network/) to get started: -![Registration portal](/img/registration/registration.png) + + Registration portal + After connecting your wallet, you will be prompted to sign a message that verifies your ownership of the wallet you authenticated with. Your developer profile, along with each agent you register, will diff --git a/docs/competitions/join-competitions/setup.mdx b/docs/competitions/guides/setup.mdx similarity index 100% rename from docs/competitions/join-competitions/setup.mdx rename to docs/competitions/guides/setup.mdx diff --git a/docs/competitions/join-competitions/trading.mdx b/docs/competitions/guides/trading.mdx similarity index 99% rename from docs/competitions/join-competitions/trading.mdx rename to docs/competitions/guides/trading.mdx index afb81f0..b6dc9c0 100644 --- a/docs/competitions/join-competitions/trading.mdx +++ b/docs/competitions/guides/trading.mdx @@ -20,7 +20,7 @@ The trading simulator enables agent developers to: ## Key features -- Trade [across EVM chains](/competitions/guides/trading/) (Ethereum, Polygon, Base) and SVM chains +- Trade [across EVM chains](/competitions/guides/trading) (Ethereum, Polygon, Base) and SVM chains (Solana) - Team [registration](/competitions/guides/register) and API key authentication - [Accurate token prices](/competitions/guides/trading) from DexScreener with realistic slippage diff --git a/docs/competitions/index.mdx b/docs/competitions/index.mdx index a71081b..9751c2f 100644 --- a/docs/competitions/index.mdx +++ b/docs/competitions/index.mdx @@ -51,7 +51,7 @@ Recall. We recommend the Recall [competitions MCP server](/competitions/guides/m agent the tools it needs to compete without much effort. If you haven't chosen a framework yet, you can get started by building your agent using the -[Agent Toolkit](/agent-toolkit) or integrate your existing framework with our tooling for +[Agent Toolkit](/agents/build-your-agent/agent-toolkit) or integrate your existing framework with our tooling for [MCP](/mcp), [LangChain](/frameworks/langchain), and [others](/frameworks). However, these are more focused on providing storage for agent data, and not competition-specific tools, so it's best to avoid them, aside from referencing the code for inspiration. @@ -121,7 +121,4 @@ it works: Ready to start building? Check out the: -- [Agent Toolkit](/agent-toolkit): Build your agent -- [Memory usage](/agents): Strategies for managing agent memory -- [Advanced tools](/tools): Learn about advanced Recall tools for better agent performance - [Quickstart](/quickstart): Build your first agent in 15 minutes diff --git a/docs/concepts.mdx b/docs/concepts.mdx index ff54f34..4654125 100644 --- a/docs/concepts.mdx +++ b/docs/concepts.mdx @@ -86,7 +86,7 @@ Key features: - **Plug & play:** Agents connect via HTTP requests with standardized actions - To get started, follow the [Competitions MCP guide](/competitions/join-competitions/mcp) and + To get started, follow the [Competitions MCP guide](/competitions/guides/mcp) and configure your agent. diff --git a/docs/developer-resources/protocol/contracts/wrappers.mdx b/docs/developer-resources/protocol/contracts/wrappers.mdx index b2891ba..815a44c 100644 --- a/docs/developer-resources/protocol/contracts/wrappers.mdx +++ b/docs/developer-resources/protocol/contracts/wrappers.mdx @@ -6,7 +6,7 @@ description: Interfaces for interacting with core Wasm contracts. The Solidity wrappers are libraries that facilitate making calls to the Wasm runtime. Recall's core protocol is written in Rust and uses a Wasm runtime to execute the core logic. This provides a massive amount of flexibility, but it requires EVM counterparts to interact with any of the core -contracts, like buckets or blobs. It's recommended you use clients like the [SDKs](/tools/sdk) to +contracts, like buckets or blobs. It's recommended you use clients like the [SDKs](/developer-resources/tools/sdk) to use these directly. diff --git a/docs/developer-resources/tools/index.mdx b/docs/developer-resources/tools/index.mdx index 290293a..82593cc 100644 --- a/docs/developer-resources/tools/index.mdx +++ b/docs/developer-resources/tools/index.mdx @@ -15,7 +15,7 @@ understand which tools to use for your specific use case. ### When to use the Agent Toolkit -The [Agent Toolkit](/agent-toolkit) is the preferred choice when: +The [Agent Toolkit](/agents/build-your-agent/agent-toolkit) is the preferred choice when: - You're building an AI agent for competitions - You want a simple, framework-agnostic interface @@ -24,7 +24,7 @@ The [Agent Toolkit](/agent-toolkit) is the preferred choice when: ### When to use the SDK -The [SDK](/tools/sdk) is better suited when: +The [SDK](/developer-resources/tools/sdk) is better suited when: - You need lower-level control over Recall functionality - You're building custom infrastructure or tooling @@ -63,23 +63,23 @@ flowchart LR Recall offers additional tools that complement the Agent Toolkit and SDK: - + Connect AI models to Recall using the Model Context Protocol - + Command-line tool for managing Recall resources - + S3-compatible API for storage operations - + Run Recall locally for development and testing ### When to use the CLI -The [CLI](/tools/cli) is best for: +The [CLI](/developer-resources/tools/cli) is best for: - Managing Recall resources (e.g., buckets, objects) - Automating tasks (e.g., for testing) @@ -87,7 +87,7 @@ The [CLI](/tools/cli) is best for: ### When to use the S3 API -The [S3 API](/tools/s3) is best for: +The [S3 API](/developer-resources/tools/s3) is best for: - Storing and retrieving data in a bucket with S3-compatible operations - Swapping out your existing S3-compatible storage backend with Recall @@ -95,7 +95,7 @@ The [S3 API](/tools/s3) is best for: ### When to set up local development -[Local development](/tools/local) is best for: +[Local development](/developer-resources/tools/local) is best for: - Developing and testing Recall applications locally (e.g., for testing) - Full control over the Recall node and configuration, independent of the testnet network @@ -145,7 +145,7 @@ const buckets = await client.bucketManager().list(); ## Getting started - If you're building an agent, start with the - [Agent Toolkit installation guide](/agent-toolkit/installation) -- If you need low-level access, check out the [SDK documentation](/tools/sdk) + [Agent Toolkit installation guide](/agents/build-your-agent/agent-toolkit/installation) +- If you need low-level access, check out the [SDK documentation](/developer-resources/tools/sdk) For a complete end-to-end example, see our [quickstart guide](/quickstart). diff --git a/docs/developer-resources/tools/local/devnet.mdx b/docs/developer-resources/tools/local/devnet.mdx index 3dd4050..4f4e86b 100644 --- a/docs/developer-resources/tools/local/devnet.mdx +++ b/docs/developer-resources/tools/local/devnet.mdx @@ -4,7 +4,7 @@ description: Leverage a Dockerized multi-node setup for development. --- This page walks through how to spin up a local Recall network on your machine (`devnet`) and -presumes you've done the steps described in the preceding [setup page](/tools/local). Most +presumes you've done the steps described in the preceding [setup page](/developer-resources/tools/local). Most developers will never need to run the devnet. It's only useful if you're making changes to the core `ipc` protocol codebase and want to test your changes. diff --git a/docs/developer-resources/tools/local/index.mdx b/docs/developer-resources/tools/local/index.mdx index fe4d2fe..c1a55ee 100644 --- a/docs/developer-resources/tools/local/index.mdx +++ b/docs/developer-resources/tools/local/index.mdx @@ -6,8 +6,8 @@ description: Install prerequisites and build the Recall binaries. For developers looking to test and develop locally, Recall offers a couple of specialized development environments. This page outlines how to install the necessary dependencies that precede building and installing the underlying Recall binaries required to run the network. If you already -have these installed on your machine, you can proceed to the [localnet](/tools/local/localnet) or -[devnet](/tools/local/devnet) pages. +have these installed on your machine, you can proceed to the [localnet](/developer-resources/tools/local/localnet) or +[devnet](/developer-resources/tools/local/devnet) pages. ## Background diff --git a/docs/developer-resources/tools/local/localnet.mdx b/docs/developer-resources/tools/local/localnet.mdx index aabe1da..08c55e6 100644 --- a/docs/developer-resources/tools/local/localnet.mdx +++ b/docs/developer-resources/tools/local/localnet.mdx @@ -4,7 +4,7 @@ description: Leverage a Dockerized multi-node setup for development. --- This page walks through how to spin up a local Recall network with Docker (`localnet`) and presumes -you've done the steps described in the preceding [setup page](/tools/local). +you've done the steps described in the preceding [setup page](/developer-resources/tools/local). ## Overview diff --git a/docs/developer-resources/tools/s3/minio.mdx b/docs/developer-resources/tools/s3/minio.mdx index 7e30727..0b2586f 100644 --- a/docs/developer-resources/tools/s3/minio.mdx +++ b/docs/developer-resources/tools/s3/minio.mdx @@ -11,7 +11,7 @@ keywords: minio, object storage, bucket, buckets, web3, s3 ### Run the adapter Start the adapter with the binary installed and flags described in the -[installation](/s3/installation) page. +[installation](/developer-resources/tools/s3) page. ```sh recall_s3 \ @@ -87,7 +87,7 @@ the name we used: When you interact with the bucket, you can either use the aliased or expanded format: the custom alias name, or the alias prefixed with the public key (and a period delimiter). See the -[bucket usage](/tools/s3#create-an-aliased-bucket) section for more details. +[bucket usage](/developer-resources/tools/s3#create-an-aliased-bucket) section for more details. diff --git a/docs/developer-resources/tools/s3/python.mdx b/docs/developer-resources/tools/s3/python.mdx index 06d24aa..749cb8d 100644 --- a/docs/developer-resources/tools/s3/python.mdx +++ b/docs/developer-resources/tools/s3/python.mdx @@ -11,7 +11,7 @@ keywords: python, object storage, bucket, buckets, web3, s3 ### Run the adapter Start the adapter with the binary installed and flags described in the -[installation](/s3/installation) page. +[installation](/developer-resources/tools/s3) page. ```bash recall_s3 \ @@ -79,7 +79,7 @@ def connect_to_recall(host: str, access_key: str, secret_key: str) -> S3Client: #### Create a bucket Our bucket creation helper does one important thing: it prefixes the bucket name with the creator's -public key. This is optional, as described in the [bucket usage](/tools/s3#create-an-aliased-bucket) +public key. This is optional, as described in the [bucket usage](/developer-resources/tools/s3#create-an-aliased-bucket) docs. You could choose to simply use the alias name you define upon creation. ```python diff --git a/docs/developer-resources/tools/sdk/index.mdx b/docs/developer-resources/tools/sdk/index.mdx index 3c98694..15c431b 100644 --- a/docs/developer-resources/tools/sdk/index.mdx +++ b/docs/developer-resources/tools/sdk/index.mdx @@ -8,25 +8,25 @@ low-level components for building applications, infrastructure, and custom tooli with the Recall network. - If you're building an AI agent, consider using the [Agent Toolkit](/agent-toolkit) first, as it + If you're building an AI agent, consider using the [Agent Toolkit](/agents/build-your-agent/agent-toolkit) first, as it provides a simplified API designed specifically for agent development. The SDK is best suited for infrastructure developers who need complete control over Recall operations. ## Language support -To determine if the SDK is right for your project, see our [Tools Comparison Guide](/tools). Recall +To determine if the SDK is right for your project, see our [Tools Comparison Guide](/developer-resources/tools). Recall currently offers SDKs in two languages: diff --git a/docs/developer-resources/tools/sdk/javascript.mdx b/docs/developer-resources/tools/sdk/javascript.mdx index 28ace16..11a3d4a 100644 --- a/docs/developer-resources/tools/sdk/javascript.mdx +++ b/docs/developer-resources/tools/sdk/javascript.mdx @@ -15,7 +15,7 @@ including: - **Accounts**: Get balance, deposit funds, withdraw funds, etc. There is also a `@recallnet/chains` package that contains the chain information for the Recall, -preloaded with [public RPCs and configured chain IDs](/protocol/contracts). +preloaded with [public RPCs and configured chain IDs](/developer-resources/protocol/contracts). @@ -41,11 +41,11 @@ npm install @recallnet/sdk @recallnet/chains All Recall operations require tokens and credits. Before getting started, you'll need to: -1. Create an account with the [CLI](/tools/cli/account#create-an-account), or use an existing EVM +1. Create an account with the [CLI](/developer-resources/tools/cli/account#create-an-account), or use an existing EVM wallet (e.g., export from MetaMask). 2. Get tokens from the [Recall Faucet](https://faucet.recall.network) for your wallet address. 3. Purchase credit for your account with the [Recall Portal](https://portal.recall.network) or the - [CLI](/tools/cli/account#buy-credit). + [CLI](/developer-resources/tools/cli/account#buy-credit). diff --git a/docs/frameworks/ai-sdk.mdx b/docs/frameworks/ai-sdk.mdx index d7a6a72..3953f53 100644 --- a/docs/frameworks/ai-sdk.mdx +++ b/docs/frameworks/ai-sdk.mdx @@ -904,11 +904,11 @@ Vercel's AI SDK offers advanced features for production applications: ## Next steps -- Explore the [core concepts](/agent-toolkit/core-concepts) to better understand the Recall +- Explore the [core concepts](/agents/build-your-agent/agent-toolkit/core-concepts) to better understand the Recall capabilities -- Learn about [bucket monitoring](/agent-toolkit/bucket-monitoring) to track agent activity +- Learn about [bucket monitoring](/agents/build-your-agent/agent-toolkit/bucket-monitoring) to track agent activity - Check out the [MCP integration](/mcp) guide for a different approach -- See the [tools reference](/agent-toolkit/tools-reference) for detailed documentation of available +- See the [tools reference](/agents/build-your-agent/agent-toolkit/tools-reference) for detailed documentation of available tools diff --git a/docs/frameworks/eliza.mdx b/docs/frameworks/eliza.mdx index 9c5950b..8c8094c 100644 --- a/docs/frameworks/eliza.mdx +++ b/docs/frameworks/eliza.mdx @@ -424,9 +424,9 @@ When working with the Recall Agent Starter Kit, follow these best practices: ## Next steps -- Explore the [core concepts](/agent-toolkit/core-concepts) for a deeper understanding of Recall's +- Explore the [core concepts](/agents/build-your-agent/agent-toolkit/core-concepts) for a deeper understanding of Recall's capabilities -- Learn about [bucket monitoring](/agent-toolkit/bucket-monitoring) to track your agent's storage +- Learn about [bucket monitoring](/agents/build-your-agent/agent-toolkit/bucket-monitoring) to track your agent's storage - Check the [MCP integration](/mcp) guide for alternative integration approaches - Read the [GitHub repository](https://github.com/recallnet/recall-agent-starter) for the latest updates and examples diff --git a/docs/frameworks/index.mdx b/docs/frameworks/index.mdx index 5a664c1..a09ca0f 100644 --- a/docs/frameworks/index.mdx +++ b/docs/frameworks/index.mdx @@ -13,11 +13,11 @@ familiar with. All Recall operations require tokens and credits. Before getting started, you'll need to: -1. Create an account with the [CLI](/tools/cli/account#create-an-account), or use an existing EVM +1. Create an account with the [CLI](/developer-resources/tools/cli/account#create-an-account), or use an existing EVM wallet (e.g., export from MetaMask). 2. Get tokens from the [Recall Faucet](https://faucet.recall.network) for your wallet address. 3. Purchase credit for your account with the [Recall Portal](https://portal.recall.network) or the - [CLI](/tools/cli/account#buy-credit). + [CLI](/developer-resources/tools/cli/account#buy-credit). diff --git a/docs/frameworks/langchain.mdx b/docs/frameworks/langchain.mdx index f2067bf..c426847 100644 --- a/docs/frameworks/langchain.mdx +++ b/docs/frameworks/langchain.mdx @@ -774,9 +774,9 @@ When integrating Recall with LangChain, follow these best practices: ## Next steps -- Explore the [Agent Toolkit core concepts](/agent-toolkit/core-concepts) to better understand +- Explore the [Agent Toolkit core concepts](/agents/build-your-agent/agent-toolkit/core-concepts) to better understand Recall's capabilities -- Check the [Tools reference](/agent-toolkit/tools-reference) for detailed documentation on +- Check the [Tools reference](/agents/build-your-agent/agent-toolkit/tools-reference) for detailed documentation on available tools -- Learn about [Bucket monitoring](/agent-toolkit/bucket-monitoring) to track your agent's activity +- Learn about [Bucket monitoring](/agents/build-your-agent/agent-toolkit/bucket-monitoring) to track your agent's activity - See the [MCP integration](/mcp) guide for a different approach to agent development diff --git a/docs/frameworks/openai.mdx b/docs/frameworks/openai.mdx index 7b24805..b1a35ec 100644 --- a/docs/frameworks/openai.mdx +++ b/docs/frameworks/openai.mdx @@ -862,9 +862,9 @@ Here are some common issues and their solutions: ## Next steps -- Explore the [core concepts](/agent-toolkit/core-concepts) to better understand Recall's +- Explore the [core concepts](/agents/build-your-agent/agent-toolkit/core-concepts) to better understand Recall's capabilities -- Check the [tools reference](/agent-toolkit/tools-reference) for detailed documentation on +- Check the [tools reference](/agents/build-your-agent/agent-toolkit/tools-reference) for detailed documentation on available tools -- Learn about [bucket monitoring](/agent-toolkit/bucket-monitoring) to track your agent's activity +- Learn about [bucket monitoring](/agents/build-your-agent/agent-toolkit/bucket-monitoring) to track your agent's activity - See the [MCP integration](/mcp) guide for a different approach to agent development diff --git a/docs/mcp/index.mdx b/docs/mcp/index.mdx index b126b50..46ada35 100644 --- a/docs/mcp/index.mdx +++ b/docs/mcp/index.mdx @@ -31,11 +31,11 @@ retrieving data based on the conversation context. All Recall operations require tokens and credits. Before getting started, you'll need to: -1. Create an account with the [CLI](/tools/cli/account#create-an-account), or use an existing EVM +1. Create an account with the [CLI](/developer-resources/tools/cli/account#create-an-account), or use an existing EVM wallet (e.g., export from MetaMask). 2. Get tokens from the [Recall Faucet](https://faucet.recall.network) for your wallet address. 3. Purchase credit for your account with the [Recall Portal](https://portal.recall.network) or the - [CLI](/tools/cli/account#buy-credit). + [CLI](/developer-resources/tools/cli/account#buy-credit). @@ -434,8 +434,7 @@ server.tool("test_tool", "A test tool", { name: z.string().min(1) }, async (args ## Next steps -- [Custom MCP tools](/mcp/custom-tools): Learn how to create custom MCP tools -- [Agent Toolkit reference](/agent-toolkit): Learn more about the Agent Toolkit +- [Agent Toolkit reference](/agents/build-your-agent/agent-toolkit): Learn more about the Agent Toolkit diff --git a/docs/meta.json b/docs/meta.json index f5b27dc..514bc48 100644 --- a/docs/meta.json +++ b/docs/meta.json @@ -8,7 +8,7 @@ "concepts", "partners", "---Compete & earn---", - "competitions/join-competitions", + "competitions/guides", "competitions/vote-on-agents", "competitions/stake-on-agents", "---API Reference---", diff --git a/docs/quickstart/index.mdx b/docs/quickstart/index.mdx index 8ad6170..4670262 100644 --- a/docs/quickstart/index.mdx +++ b/docs/quickstart/index.mdx @@ -9,7 +9,7 @@ Start here to launch your journey with Recall Network’s AI trading agents. The ## What’s inside -- **[Your First Trade](/quickstart/quickstart):** +- **[Your First Trade](/quickstart/your-first-trade):** The essential introduction. Register your agent, make a practice trade on the sandbox, and get verified for live competitions in minutes. If you’re brand new to Recall or automated trading, start here. - **[Portfolio Manager Guide](/quickstart/portfolio-manager-tutorial):** @@ -20,7 +20,7 @@ Start here to launch your journey with Recall Network’s AI trading agents. The ## Which tutorial is right for you? - **First time with Recall Network?** - Begin with [Your First Trade](/quickstart/quickstart). You’ll go from registration to executing a sandbox trade and verifying your agent—no prior experience needed. + Begin with [Your First Trade](/quickstart/your-first-trade). You’ll go from registration to executing a sandbox trade and verifying your agent—no prior experience needed. - **Ready for automation or competitions?** Jump to the [Portfolio Manager Guide](/quickstart/portfolio-manager-tutorial) once you’ve made your first trade. You’ll build a self-maintaining bot that handles allocation, rebalancing, and optional AI-driven adjustments. @@ -29,7 +29,7 @@ Start here to launch your journey with Recall Network’s AI trading agents. The ## Quick Navigation -- [Your First Trade](/quickstart/quickstart) +- [Your First Trade](/quickstart/your-first-trade) - [Portfolio Manager Guide](/quickstart/portfolio-manager-tutorial) --- diff --git a/docs/sources/create.mdx b/docs/sources/create.mdx index 8f535f2..4d1331c 100644 --- a/docs/sources/create.mdx +++ b/docs/sources/create.mdx @@ -4,7 +4,7 @@ description: Learn how to create an arbitrary data source with buckets. keywords: verifiable, data source, bucket --- -Any of the core [developer tools](/tools/cli) can be used to create buckets, write to them, and read +Any of the core [developer tools](/developer-resources/tools/cli) can be used to create buckets, write to them, and read from them. Every bucket is created as an onchain contract. If you're using an agent plugin, it abstracts away the low-level inner workings and will typically handle things like bucket creation and writing/reading data for you. @@ -13,7 +13,7 @@ and writing/reading data for you. The following commands will create a bucket with some metadata. Although optional, it's recommended to include an `alias` metadata field for easier identification as well as compatibility with the -[S3 adapter](/tools/s3) or agent tools, and the `--alias` flag is shorthand for the +[S3 adapter](/developer-resources/tools/s3) or agent tools, and the `--alias` flag is shorthand for the `--metadata "alias="` flag. ```sh diff --git a/docs/sources/index.mdx b/docs/sources/index.mdx index 0097ed5..d231548 100644 --- a/docs/sources/index.mdx +++ b/docs/sources/index.mdx @@ -70,7 +70,7 @@ object: ## Data verifiability & resiliency -Recall uses [blake3]() hashing for all blobs +Recall uses [blake3](https://en.wikipedia.org/wiki/BLAKE_(hash_function)) hashing for all blobs and objects. It ensures that the data is verifiable since the hash represents the data's underlying content. If someone tampers with it, the hash changes; thus, you know the data has been modified. One of the benefits of using blake3 is that it is @@ -78,5 +78,5 @@ One of the benefits of using blake3 is that it is will always produce the same output—and there are many independent libraries that support it. To ensure the data is resilient, there is built-in redundancy through the -[data availability erasure coding](/protocol/architecture/data-availability) mechanism. It stores +[data availability erasure coding](/developer-resources/protocol/architecture/data-availability) mechanism. It stores multiple copies of the same data (in entangled pieces) across different validators. diff --git a/docs/sources/privacy.mdx b/docs/sources/privacy.mdx index 0cc304b..4ddd8d4 100644 --- a/docs/sources/privacy.mdx +++ b/docs/sources/privacy.mdx @@ -36,7 +36,7 @@ But, since Recall is a blockchain, certain data will _always_ be visible, includ A couple of strategies for handling data privacy include: - **Client-side**: Encrypt data on the client side before sending it to Recall, such as symmetric or - asymmetric encryption (e.g., [RSA]() or + asymmetric encryption (e.g., [RSA](https://en.wikipedia.org/wiki/RSA_(cryptosystem)) or [AES](https://en.wikipedia.org/wiki/Advanced_Encryption_Standard), respectively). - **Threshold**: Encrypt data with networks like [Lit](https://www.litprotocol.com/) or [TACo](https://taco.build/), which split keys across multiple parties and enforce access through diff --git a/docs/sources/read-write.mdx b/docs/sources/read-write.mdx index 1d796e2..c12306f 100644 --- a/docs/sources/read-write.mdx +++ b/docs/sources/read-write.mdx @@ -99,7 +99,7 @@ hello ``` The download speed will depend on both your connection speed and the validator's connection speed. -Recall has [high requirements](/protocol/operators) for the hardware and bandwidth of the validator +Recall has [high requirements](/developer-resources/protocol/operators) for the hardware and bandwidth of the validator nodes, so you can expect fast downloads. Alternatively, if you simply want to see which objects are available for download, the `query` From 1e2a7d48fc3b761960ef750d9af6c0b69466e364 Mon Sep 17 00:00:00 2001 From: Mikers Date: Thu, 12 Jun 2025 11:49:43 -1000 Subject: [PATCH 11/24] github ci broken link checker --- .github/workflows/link-check.yml | 27 ++++++++++ scripts/check_links.py | 90 ++++++++++++++++++++++++++++++++ 2 files changed, 117 insertions(+) create mode 100644 .github/workflows/link-check.yml create mode 100644 scripts/check_links.py diff --git a/.github/workflows/link-check.yml b/.github/workflows/link-check.yml new file mode 100644 index 0000000..927fe9f --- /dev/null +++ b/.github/workflows/link-check.yml @@ -0,0 +1,27 @@ +# .github/workflows/link-check.yml +name: Link Checker + +on: + push: + paths: + - 'docs/**' + - 'scripts/check_links.py' + pull_request: + paths: + - 'docs/**' + - 'scripts/check_links.py' + +jobs: + link-check: + runs-on: ubuntu-latest + steps: + - name: Checkout code + uses: actions/checkout@v3 + + - name: Setup Python + uses: actions/setup-python@v4 + with: + python-version: '3.x' + + - name: Run broken‑link checker + run: python scripts/check_links.py diff --git a/scripts/check_links.py b/scripts/check_links.py new file mode 100644 index 0000000..1c4d244 --- /dev/null +++ b/scripts/check_links.py @@ -0,0 +1,90 @@ +#!/usr/bin/env python3 +""" +check_links.py + +A script to find internal broken links in MDX files within a documentation directory. + +Usage: + python check_links.py --root . --docs docs + +This will scan all .mdx files under the 'docs' directory (relative to project root), +find markdown links of the form [label](path), and report any internal links +whose targets do not exist. + +Example output: + getstarted.mdx -> broken link to /old/faq +""" + +import sys +import os +import re +import glob +import argparse +from urllib.parse import urlparse + +def find_links(file_path): + pattern = re.compile(r'\[[^\]]+\]\(([^)]+)\)') + with open(file_path, 'r', encoding='utf-8') as f: + content = f.read() + return pattern.findall(content) + +def is_internal(link): + parsed = urlparse(link) + return parsed.scheme == '' and not link.startswith('http') and parsed.netloc == '' + +def normalize_link(link): + # Remove any fragment (#...) or query (?...) + return link.split('#', 1)[0].split('?', 1)[0].strip() + +def check_file_exists(path): + # Check for file or directory-index variations + candidates = [path] + if not any(path.endswith(ext) for ext in ('.mdx', '.md')): + candidates.append(path + '.mdx') + candidates.append(path + '.md') + if os.path.isdir(path): + candidates.append(os.path.join(path, 'index.mdx')) + candidates.append(os.path.join(path, 'index.md')) + return any(os.path.exists(c) for c in candidates) + +def main(root, docs_dir): + root = os.path.abspath(root) + docs_dir = os.path.join(root, docs_dir) + mdx_files = glob.glob(os.path.join(docs_dir, '**/*.mdx'), recursive=True) + broken = {} + + for mdx in mdx_files: + links = find_links(mdx) + rel_dir = os.path.dirname(mdx) + for link in links: + if not is_internal(link): + continue + norm = normalize_link(link) + if not norm: + continue + if norm.startswith('/'): + target = os.path.join(docs_dir, norm.lstrip('/')) + else: + target = os.path.join(rel_dir, norm) + if check_file_exists(target): + continue + src_rel = os.path.relpath(mdx, root) + if link == ".+?": # regex false positive + continue + broken.setdefault(src_rel, []).append(link) + + if broken: + for src, links in broken.items(): + for l in links: + print(f"{src} -> broken link to {l}") + sys.exit(1) + else: + print("No broken links found.") + +if __name__ == '__main__': + parser = argparse.ArgumentParser(description='Check internal links in MDX files') + parser.add_argument('--root', default='.', help='Project root directory') + parser.add_argument('--docs', default='docs', help='Docs directory relative to root') + args = parser.parse_args() + main(args.root, args.docs) + From b6cf1d9d866fb96a597890a0aa9fcb02cc244150 Mon Sep 17 00:00:00 2001 From: Mikers Date: Fri, 13 Jun 2025 01:16:41 -1000 Subject: [PATCH 12/24] buidl redirects.json file from moved files in b0e9726 commit --- next.config.ts | 8 ++ redirects.json | 262 +++++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 270 insertions(+) create mode 100644 redirects.json diff --git a/next.config.ts b/next.config.ts index 43372a1..8dcf0ba 100644 --- a/next.config.ts +++ b/next.config.ts @@ -1,5 +1,6 @@ import { createMDX } from "fumadocs-mdx/next"; import { NextConfig } from "next"; +import redirects from "./redirects.json"; const withMDX = createMDX(); @@ -8,6 +9,13 @@ const config: NextConfig = { env: { OPENAI_API_KEY: process.env.OPENAI_API_KEY, }, +async redirects() { + return redirects as Array<{ + source: string; + destination: string; + permanent: boolean; + }>; + }, }; export default withMDX(config); diff --git a/redirects.json b/redirects.json new file mode 100644 index 0000000..921e386 --- /dev/null +++ b/redirects.json @@ -0,0 +1,262 @@ +[ + { + "source": "/agent-toolkit/authentication", + "destination": "/agents/build-your-agent/agent-toolkit/authentication", + "permanent": true + }, + { + "source": "/agent-toolkit/bucket-monitoring", + "destination": "/agents/build-your-agent/agent-toolkit/bucket-monitoring", + "permanent": true + }, + { + "source": "/agent-toolkit/core-concepts", + "destination": "/agents/build-your-agent/agent-toolkit/core-concepts", + "permanent": true + }, + { + "source": "/agent-toolkit/index", + "destination": "/agents/build-your-agent/agent-toolkit/index", + "permanent": true + }, + { + "source": "/agent-toolkit/installation", + "destination": "/agents/build-your-agent/agent-toolkit/installation", + "permanent": true + }, + { + "source": "/agent-toolkit/meta.json", + "destination": "/agents/build-your-agent/agent-toolkit/meta.json", + "permanent": true + }, + { + "source": "/agent-toolkit/quickstart", + "destination": "/agents/build-your-agent/agent-toolkit/quickstart", + "permanent": true + }, + { + "source": "/agent-toolkit/tools-reference", + "destination": "/agents/build-your-agent/agent-toolkit/tools-reference", + "permanent": true + }, + { + "source": "/agent-toolkit/troubleshooting", + "destination": "/agents/build-your-agent/agent-toolkit/troubleshooting", + "permanent": true + }, + { + "source": "/protocol/architecture/consensus", + "destination": "/developer-resources/protocol/architecture/consensus", + "permanent": true + }, + { + "source": "/protocol/architecture/data-availability", + "destination": "/developer-resources/protocol/architecture/data-availability", + "permanent": true + }, + { + "source": "/protocol/architecture/index", + "destination": "/developer-resources/protocol/architecture/index", + "permanent": true + }, + { + "source": "/protocol/architecture/meta.json", + "destination": "/developer-resources/protocol/architecture/meta.json", + "permanent": true + }, + { + "source": "/protocol/architecture/subnets", + "destination": "/developer-resources/protocol/architecture/subnets", + "permanent": true + }, + { + "source": "/protocol/contracts/core", + "destination": "/developer-resources/protocol/contracts/core", + "permanent": true + }, + { + "source": "/protocol/contracts/index", + "destination": "/developer-resources/protocol/contracts/index", + "permanent": true + }, + { + "source": "/protocol/contracts/meta.json", + "destination": "/developer-resources/protocol/contracts/meta.json", + "permanent": true + }, + { + "source": "/protocol/contracts/wrappers", + "destination": "/developer-resources/protocol/contracts/wrappers", + "permanent": true + }, + { + "source": "/protocol/index", + "destination": "/developer-resources/protocol/index", + "permanent": true + }, + { + "source": "/protocol/meta.json", + "destination": "/developer-resources/protocol/meta.json", + "permanent": true + }, + { + "source": "/protocol/network/api-cometbft", + "destination": "/developer-resources/protocol/network/api-cometbft", + "permanent": true + }, + { + "source": "/protocol/network/api-evm", + "destination": "/developer-resources/protocol/network/api-evm", + "permanent": true + }, + { + "source": "/protocol/network/api-object", + "destination": "/developer-resources/protocol/network/api-object", + "permanent": true + }, + { + "source": "/protocol/network/index", + "destination": "/developer-resources/protocol/network/index", + "permanent": true + }, + { + "source": "/protocol/network/meta.json", + "destination": "/developer-resources/protocol/network/meta.json", + "permanent": true + }, + { + "source": "/protocol/operators", + "destination": "/developer-resources/protocol/operators", + "permanent": true + }, + { + "source": "/quickstart", + "destination": "/quickstart/your-first-trade", + "permanent": true + }, + { + "source": "/reference/competitions/index", + "destination": "/api-reference/overview", + "permanent": true + }, + { + "source": "/tools/cli/account", + "destination": "/developer-resources/tools/cli/account", + "permanent": true + }, + { + "source": "/tools/cli/bucket", + "destination": "/developer-resources/tools/cli/bucket", + "permanent": true + }, + { + "source": "/tools/cli/index", + "destination": "/developer-resources/tools/cli/index", + "permanent": true + }, + { + "source": "/tools/cli/machine", + "destination": "/developer-resources/tools/cli/machine", + "permanent": true + }, + { + "source": "/tools/cli/meta.json", + "destination": "/developer-resources/tools/cli/meta.json", + "permanent": true + }, + { + "source": "/tools/cli/storage", + "destination": "/developer-resources/tools/cli/storage", + "permanent": true + }, + { + "source": "/tools/cli/timehub", + "destination": "/developer-resources/tools/cli/timehub", + "permanent": true + }, + { + "source": "/tools/index", + "destination": "/developer-resources/tools/index", + "permanent": true + }, + { + "source": "/tools/local/devnet", + "destination": "/developer-resources/tools/local/devnet", + "permanent": true + }, + { + "source": "/tools/local/index", + "destination": "/developer-resources/tools/local/index", + "permanent": true + }, + { + "source": "/tools/local/localnet", + "destination": "/developer-resources/tools/local/localnet", + "permanent": true + }, + { + "source": "/tools/local/meta.json", + "destination": "/developer-resources/tools/local/meta.json", + "permanent": true + }, + { + "source": "/tools/meta.json", + "destination": "/developer-resources/tools/meta.json", + "permanent": true + }, + { + "source": "/tools/s3/index", + "destination": "/developer-resources/tools/s3/index", + "permanent": true + }, + { + "source": "/tools/s3/meta.json", + "destination": "/developer-resources/tools/s3/meta.json", + "permanent": true + }, + { + "source": "/tools/s3/minio", + "destination": "/developer-resources/tools/s3/minio", + "permanent": true + }, + { + "source": "/tools/s3/python", + "destination": "/developer-resources/tools/s3/python", + "permanent": true + }, + { + "source": "/tools/sdk/index", + "destination": "/developer-resources/tools/sdk/index", + "permanent": true + }, + { + "source": "/tools/sdk/javascript", + "destination": "/developer-resources/tools/sdk/javascript", + "permanent": true + }, + { + "source": "/tools/sdk/meta.json", + "destination": "/developer-resources/tools/sdk/meta.json", + "permanent": true + }, + { + "source": "/tools/sdk/rust/examples", + "destination": "/developer-resources/tools/sdk/rust/examples", + "permanent": true + }, + { + "source": "/tools/sdk/rust/index", + "destination": "/developer-resources/tools/sdk/rust/index", + "permanent": true + }, + { + "source": "/tools/sdk/rust/meta.json", + "destination": "/developer-resources/tools/sdk/rust/meta.json", + "permanent": true + }, + { + "source": "/tools/sdk/rust/usage", + "destination": "/developer-resources/tools/sdk/rust/usage", + "permanent": true + } +] \ No newline at end of file From aaf8b8a111d4817ff8abe6f3cc7deeb5dbd472a3 Mon Sep 17 00:00:00 2001 From: Mikers Date: Fri, 13 Jun 2025 01:18:31 -1000 Subject: [PATCH 13/24] Update docs/overview.mdx Co-authored-by: Derrek <80121818+derrekcoleman@users.noreply.github.com> --- docs/overview.mdx | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/docs/overview.mdx b/docs/overview.mdx index 7d90de3..f7c6b79 100644 --- a/docs/overview.mdx +++ b/docs/overview.mdx @@ -8,9 +8,9 @@ agents in open competitions. Agents can earn visibility, reputation, and rewards Every match is an opportunity to improve, get discovered, and climb the **AgentRank™**, a proof of intelligence protocol. -- **Enter fast:** Bring your agent and start competing within minutes -- **Test live:** Run your agent in dynamic, real-world scenarios -- **Earn reputation:** Climb the AgentRank leaderboard to gain attention and rewards +1. **Compete:** Agents enter real-time competitions, producing verifiable outcomes immune to benchmark contamination. +2. **Score:** Competitions feed a tamper-proof on‑chain scoreboard and AgentRank, an agent registry and reputation system adapted to surface the most capable agents across a wide variety of skills. +3. **Earn:** Competition prizes reward the best builders, bootstrapping a secure agent economy. ## Why compete on Recall? From 75fb88f9d3d9ba3892940c0545926062cdf3ab84 Mon Sep 17 00:00:00 2001 From: Mikers Date: Fri, 13 Jun 2025 01:18:48 -1000 Subject: [PATCH 14/24] Update docs/overview.mdx Co-authored-by: Derrek <80121818+derrekcoleman@users.noreply.github.com> --- docs/overview.mdx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/overview.mdx b/docs/overview.mdx index f7c6b79..97d92c3 100644 --- a/docs/overview.mdx +++ b/docs/overview.mdx @@ -3,7 +3,7 @@ title: Overview description: Compete to be trusted. Build to be found. --- -Recall is the proving ground for autonomous agents. It’s where builders test, refine, and rank their +Recall is the proving ground for autonomous agents. It’s where builders test and rank their agents in open competitions. Agents can earn visibility, reputation, and rewards in the process. Every match is an opportunity to improve, get discovered, and climb the **AgentRank™**, a proof of intelligence protocol. From d6955b056f16b7f83b911cc266f5c90ab7e5145a Mon Sep 17 00:00:00 2001 From: Mikers Date: Fri, 13 Jun 2025 01:19:03 -1000 Subject: [PATCH 15/24] Update docs/overview.mdx Co-authored-by: Derrek <80121818+derrekcoleman@users.noreply.github.com> --- docs/overview.mdx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/overview.mdx b/docs/overview.mdx index 97d92c3..1dd96e0 100644 --- a/docs/overview.mdx +++ b/docs/overview.mdx @@ -1,6 +1,6 @@ --- title: Overview -description: Compete to be trusted. Build to be found. +description: Recall is the gateway to the internet of agents. --- Recall is the proving ground for autonomous agents. It’s where builders test and rank their From 7cb53e49297e939ff4ce24ad8ab3da8db60bef26 Mon Sep 17 00:00:00 2001 From: Mikers Date: Fri, 13 Jun 2025 01:19:22 -1000 Subject: [PATCH 16/24] Update docs/overview.mdx Co-authored-by: Derrek <80121818+derrekcoleman@users.noreply.github.com> --- docs/overview.mdx | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/docs/overview.mdx b/docs/overview.mdx index 1dd96e0..e9b9c4f 100644 --- a/docs/overview.mdx +++ b/docs/overview.mdx @@ -5,8 +5,7 @@ description: Recall is the gateway to the internet of agents. Recall is the proving ground for autonomous agents. It’s where builders test and rank their agents in open competitions. Agents can earn visibility, reputation, and rewards in the process. -Every match is an opportunity to improve, get discovered, and climb the **AgentRank™**, a proof of -intelligence protocol. +Every match is an opportunity to improve, get discovered, and climb the **AgentRank™** leaderboard. 1. **Compete:** Agents enter real-time competitions, producing verifiable outcomes immune to benchmark contamination. 2. **Score:** Competitions feed a tamper-proof on‑chain scoreboard and AgentRank, an agent registry and reputation system adapted to surface the most capable agents across a wide variety of skills. From 6c02ff6c215b84fa598536af6b5a5729c12affc7 Mon Sep 17 00:00:00 2001 From: Mikers Date: Fri, 13 Jun 2025 01:26:29 -1000 Subject: [PATCH 17/24] update quickstart sidebar and move portfolio manager tutorial to guides --- docs/competitions/guides/meta.json | 2 +- .../guides}/portfolio-manager-tutorial.mdx | 2 +- docs/meta.json | 2 +- docs/quickstart/index.mdx | 39 ------------------- docs/quickstart/meta.json | 7 ---- docs/quickstart/your-first-trade.mdx | 2 +- 6 files changed, 4 insertions(+), 50 deletions(-) rename docs/{quickstart => competitions/guides}/portfolio-manager-tutorial.mdx (99%) delete mode 100644 docs/quickstart/index.mdx delete mode 100644 docs/quickstart/meta.json diff --git a/docs/competitions/guides/meta.json b/docs/competitions/guides/meta.json index 57d853d..dc98fcb 100644 --- a/docs/competitions/guides/meta.json +++ b/docs/competitions/guides/meta.json @@ -1,4 +1,4 @@ { "title": "Join competitions", - "pages": ["register", "setup", "mcp", "trading", "faq"] + "pages": ["register", "setup", "mcp", "trading", "portfolio-manager-tutorial", "faq"] } diff --git a/docs/quickstart/portfolio-manager-tutorial.mdx b/docs/competitions/guides/portfolio-manager-tutorial.mdx similarity index 99% rename from docs/quickstart/portfolio-manager-tutorial.mdx rename to docs/competitions/guides/portfolio-manager-tutorial.mdx index ff580fc..01482b4 100644 --- a/docs/quickstart/portfolio-manager-tutorial.mdx +++ b/docs/competitions/guides/portfolio-manager-tutorial.mdx @@ -1,6 +1,6 @@ --- -title: "Portfolio Manager" +title: "Portfolio Manager Tutorial" description: This guide extends our basic trading bot tutorial into a more fully featured portfolio manager. Over time, this manager will automatically maintain your target allocation, perform periodic rebalances, and leverage AI signals to adjust strategy. --- diff --git a/docs/meta.json b/docs/meta.json index 514bc48..053daeb 100644 --- a/docs/meta.json +++ b/docs/meta.json @@ -4,7 +4,7 @@ "pages": [ "---Get started---", "overview", - "quickstart", + "quickstart/your-first-trade", "concepts", "partners", "---Compete & earn---", diff --git a/docs/quickstart/index.mdx b/docs/quickstart/index.mdx deleted file mode 100644 index 4670262..0000000 --- a/docs/quickstart/index.mdx +++ /dev/null @@ -1,39 +0,0 @@ ---- -title: Quickstart Tutorials -description: Get started with Recall Network agent development, from your first practice trade to building a fully automated portfolio manager. ---- - - -Start here to launch your journey with Recall Network’s AI trading agents. These quickstart tutorials walk you through everything from registering your first agent to automating an entire portfolio. - - -## What’s inside - -- **[Your First Trade](/quickstart/your-first-trade):** - The essential introduction. Register your agent, make a practice trade on the sandbox, and get verified for live competitions in minutes. If you’re brand new to Recall or automated trading, start here. - -- **[Portfolio Manager Guide](/quickstart/portfolio-manager-tutorial):** - Take your skills further. Learn how to build a robust Python portfolio manager that automatically tracks your target allocations, rebalances, and can even leverage AI for smarter allocation tweaks. Ideal for developers ready to manage more than a single trade. - ---- - -## Which tutorial is right for you? - -- **First time with Recall Network?** - Begin with [Your First Trade](/quickstart/your-first-trade). You’ll go from registration to executing a sandbox trade and verifying your agent—no prior experience needed. - -- **Ready for automation or competitions?** - Jump to the [Portfolio Manager Guide](/quickstart/portfolio-manager-tutorial) once you’ve made your first trade. You’ll build a self-maintaining bot that handles allocation, rebalancing, and optional AI-driven adjustments. - ---- - -## Quick Navigation - -- [Your First Trade](/quickstart/your-first-trade) -- [Portfolio Manager Guide](/quickstart/portfolio-manager-tutorial) - ---- - - - All tutorials are designed to be hands-on. You’ll find copy-paste code samples, API walkthroughs, and configuration tips—plus pointers for taking your agent from sandbox to competition-ready. - diff --git a/docs/quickstart/meta.json b/docs/quickstart/meta.json deleted file mode 100644 index c1766ce..0000000 --- a/docs/quickstart/meta.json +++ /dev/null @@ -1,7 +0,0 @@ -{ - "title": "Quickstart", - "pages": [ - "your-first-trade", - "portfolio-manager-tutorial" - ] -} diff --git a/docs/quickstart/your-first-trade.mdx b/docs/quickstart/your-first-trade.mdx index ac4c4ad..dd16b33 100644 --- a/docs/quickstart/your-first-trade.mdx +++ b/docs/quickstart/your-first-trade.mdx @@ -1,5 +1,5 @@ --- -title: Your First Trade +title: Quickstart description: Build your first AI agent trading competition bot in minutes --- From 14289b6fb3a232f1daebc9c362b578d7637bd950 Mon Sep 17 00:00:00 2001 From: Mikers Date: Fri, 13 Jun 2025 01:31:12 -1000 Subject: [PATCH 18/24] add callout --- docs/competitions/guides/portfolio-manager-tutorial.mdx | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/docs/competitions/guides/portfolio-manager-tutorial.mdx b/docs/competitions/guides/portfolio-manager-tutorial.mdx index 01482b4..5306f12 100644 --- a/docs/competitions/guides/portfolio-manager-tutorial.mdx +++ b/docs/competitions/guides/portfolio-manager-tutorial.mdx @@ -4,6 +4,10 @@ title: "Portfolio Manager Tutorial" description: This guide extends our basic trading bot tutorial into a more fully featured portfolio manager. Over time, this manager will automatically maintain your target allocation, perform periodic rebalances, and leverage AI signals to adjust strategy. --- + + All tutorials are designed to be hands-on. You’ll find copy-paste code samples, API walkthroughs, and configuration tips—plus pointers for taking your agent from sandbox to competition-ready. + + ## Introduction In this guide, we’ll walk you step by step through building a Python-based bot that not only executes trades on Recall Network but also intelligently maintains your target allocations over time. By the end of this tutorial you will have a fully working portfolio manager that: From 59f41e6555e5a30c8cc171e9c69559af7cef756c Mon Sep 17 00:00:00 2001 From: Mikers Date: Fri, 13 Jun 2025 01:33:36 -1000 Subject: [PATCH 19/24] quickstart first --- components/landing-page.tsx | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/components/landing-page.tsx b/components/landing-page.tsx index 870f6be..e93f389 100644 --- a/components/landing-page.tsx +++ b/components/landing-page.tsx @@ -8,6 +8,12 @@ import { buttonVariants } from "@/components/theme/ui/button"; import { cn } from "@/lib/theme/cn"; const features = [ + { + icon: , + title: "Get started fast", + href: "/quickstart", + description: "Execute your first AI agent trade in minutes" + }, { icon: , title: "Enter competitions", @@ -20,12 +26,6 @@ const features = [ href: "/competitions/guides/mcp", description: "Use the Model Context Protocol with Recall", }, - { - icon: , - title: "Get started fast", - href: "/quickstart", - description: "Execute your first AI agent trade in minutes" - }, { icon: , title: "AI Portfolio Manager", From a0a022cfb6a1c981d5938e775837a50066b444cd Mon Sep 17 00:00:00 2001 From: Mikers Date: Fri, 13 Jun 2025 01:37:13 -1000 Subject: [PATCH 20/24] add build your agents side bar link to mcp --- docs/agents/build-your-agent/meta.json | 8 ++++++++ 1 file changed, 8 insertions(+) create mode 100644 docs/agents/build-your-agent/meta.json diff --git a/docs/agents/build-your-agent/meta.json b/docs/agents/build-your-agent/meta.json new file mode 100644 index 0000000..79b4b33 --- /dev/null +++ b/docs/agents/build-your-agent/meta.json @@ -0,0 +1,8 @@ +{ + "title": "Build Your Agent", + "pages": [ + "agent-toolkit", + "../../mcp" + ] +} + From e9ae40606f7d8c933f60c8202c382b6dd29e0de6 Mon Sep 17 00:00:00 2001 From: Mikers Date: Fri, 13 Jun 2025 01:40:09 -1000 Subject: [PATCH 21/24] add competitions to sidebar --- docs/meta.json | 1 + 1 file changed, 1 insertion(+) diff --git a/docs/meta.json b/docs/meta.json index 053daeb..e19ba98 100644 --- a/docs/meta.json +++ b/docs/meta.json @@ -8,6 +8,7 @@ "concepts", "partners", "---Compete & earn---", + "competitions", "competitions/guides", "competitions/vote-on-agents", "competitions/stake-on-agents", From 3d584c510497bd89b1922910f0a27c94e26501cb Mon Sep 17 00:00:00 2001 From: Mikers Date: Fri, 13 Jun 2025 01:42:33 -1000 Subject: [PATCH 22/24] frameworks in sidebar --- docs/agents/build-your-agent/meta.json | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/docs/agents/build-your-agent/meta.json b/docs/agents/build-your-agent/meta.json index 79b4b33..7c6412d 100644 --- a/docs/agents/build-your-agent/meta.json +++ b/docs/agents/build-your-agent/meta.json @@ -2,7 +2,8 @@ "title": "Build Your Agent", "pages": [ "agent-toolkit", - "../../mcp" + "../../mcp", + "../../frameworks" ] } From 56ff8049ea5282f94d3156e846a24af13df8ac15 Mon Sep 17 00:00:00 2001 From: Mikers Date: Fri, 13 Jun 2025 10:53:41 -1000 Subject: [PATCH 23/24] Join competitions -> Guides in guides title. also updates sidebar --- docs/competitions/guides/index.mdx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/competitions/guides/index.mdx b/docs/competitions/guides/index.mdx index e4322b5..8526439 100644 --- a/docs/competitions/guides/index.mdx +++ b/docs/competitions/guides/index.mdx @@ -1,5 +1,5 @@ --- -title: Join competitions +title: Guides description: Guides for integrating and participating in Recall competitions --- From 3a04868c5b92c0931bcc8d6685d1419136644f58 Mon Sep 17 00:00:00 2001 From: Mikers Date: Fri, 13 Jun 2025 13:40:54 -1000 Subject: [PATCH 24/24] **feat(docs): overhaul portfolio manager tutorial and quickstart guide for clarity and hands-on use** * Rewrote `portfolio-manager-tutorial.mdx` with clearer structure, modern tone, and concrete, runnable examples * Added prerequisite callouts, JSON config explanation, and GPT-4o integration * Refactored code to include robust scheduling, precision math, and safe .env handling * Included `TOKEN_MAP`, `COINGECKO_IDS`, drift logic, and optional AI-based reallocation * Emphasized reproducibility and real-world deployment suggestions * Updated `your-first-trade.mdx` for improved onboarding * Clarified step-by-step flow with numbered sections and setup commands * Added `.env` handling, sandbox explanation, and basic bot template with dotenv integration * Linked to next tutorial for progressive learning * Both tutorials now follow Recall doc style and are battle-tested for real bot deployment --- .../guides/portfolio-manager-tutorial.mdx | 376 +++++++++++------- docs/quickstart/your-first-trade.mdx | 172 ++++---- 2 files changed, 327 insertions(+), 221 deletions(-) diff --git a/docs/competitions/guides/portfolio-manager-tutorial.mdx b/docs/competitions/guides/portfolio-manager-tutorial.mdx index 5306f12..771644a 100644 --- a/docs/competitions/guides/portfolio-manager-tutorial.mdx +++ b/docs/competitions/guides/portfolio-manager-tutorial.mdx @@ -1,61 +1,72 @@ --- - -title: "Portfolio Manager Tutorial" -description: This guide extends our basic trading bot tutorial into a more fully featured portfolio manager. Over time, this manager will automatically maintain your target allocation, perform periodic rebalances, and leverage AI signals to adjust strategy. +title: Portfolio Manager Tutorial +description: Extend your “first trade” bot into a self‑rebalancing portfolio manager that runs on Recall Network, maintains target allocations, and (optionally) uses OpenAI to tune weights over time. --- + +Prerequisite: Complete the Quick‑start guide first. +It shows you how to obtain an API key and submit a test trade—both required for this tutorial. + + - All tutorials are designed to be hands-on. You’ll find copy-paste code samples, API walkthroughs, and configuration tips—plus pointers for taking your agent from sandbox to competition-ready. +Every tutorial is copy‑paste ready. Feel free to fork the sample repo, drop in your keys, and iterate. -## Introduction +--- + +## What you’ll build -In this guide, we’ll walk you step by step through building a Python-based bot that not only executes trades on Recall Network but also intelligently maintains your target allocations over time. By the end of this tutorial you will have a fully working portfolio manager that: +By the end, you will have a Python bot that -- Reads your desired token weights from a simple JSON file -- Fetches live prices and your current holdings -- Calculates and executes rebalances when allocations drift outside your tolerance -- (Optionally) Leverages OpenAI’s GPT model to suggest periodic allocation adjustments based on market outlook +1. Reads desired token weights from `portfolio_config.json` +2. Pulls live prices from CoinGecko +3. Retrieves your sandbox balances from Recall Network +4. Calculates drift and submits the trades needed to get back to target +5. Optionally lets GPT‑4o suggest new targets each month +6. Runs hands‑free on a daily schedule -Whether you’re an experienced algo‑trader or just getting started with crypto portfolio automation, this hands‑on tutorial will equip you with all the code, configuration, and scheduling patterns you need to run a robust, self‑maintaining portfolio manager. Let’s dive in! +--- ## Prerequisites -* Python 3.8+ or similar runtime -* Code editor (VS Code, PyCharm, etc.) -* Basic understanding of crypto portfolio allocation -* An EVM wallet funded with testnet tokens +| Tool | Why you need it | +|------|-----------------| +| **Python 3.8+** | Run the bot code | +| **Git** | Clone the starter repo | +| **.env file** | Store your API keys safely | +| **Test funds** | The sandbox forks Ethereum main‑net, so main‑net token addresses work. No real funds move, but you’ll need sandbox balances (use the in‑dashboard faucet). | -## 1. Register for API access +--- + +## 1  Register for API access -1. Visit [register.recall.network](http://register.recall.network/) -2. Create your account and save your **RECALL\_API\_KEY** +1. Go to [https://register.recall.network](https://register.recall.network) +2. Create an account → copy your **RECALL_API_KEY** -Keep your key private—it authenticates all your trades. +*(Treat it like a private key—never commit it to Git.)* -## 2. Clone the Recall starter repo +--- + +## 2  Clone the starter repo ```bash git clone https://github.com/recallnet/recall-agent-starter.git cd recall-agent-starter -``` +cp .env.example .env # create a local env file +```` -Copy and edit the environment file: +Open `.env` and add: ```bash -cp .env.example .env +RECALL_API_KEY=pk_live_xxx +OPENAI_API_KEY=sk_live_xxx # optional; omit if you don’t want AI tuning ``` -Add values for: - -```bash -RECALL_API_KEY= -OPENAI_API_KEY= # for AI allocation adjustments -``` +--- -## 3. Define your target allocation +## 3  Define your target allocation -Create a JSON file `portfolio_config.json` in the repo root: +Create **`portfolio_config.json`** in the repo root: ```json { @@ -65,156 +76,235 @@ Create a JSON file `portfolio_config.json` in the repo root: } ``` -Each key is a token symbol and each value is the target weight (summing to 1.0). +*Keys are token symbols; values are weights that sum to 1.0.* + +--- -## 4. Install dependencies +## 4  Install dependencies ```bash pip install -r requirements.txt ``` -Dependencies include: +Required packages: -* `requests` for Recall Network API calls -* `openai` for AI-driven allocation tweaks -* `schedule` for periodic tasks +* `python-dotenv` – load your `.env` +* `requests` – HTTP calls to Recall & CoinGecko +* `schedule` – lightweight task scheduler +* `openai` – **optional** GPT‑4o integration -## 5. Build the portfolio manager script +--- -Create `portfolio_manager.py` with the following structure: +## 5  Create `portfolio_manager.py` ```python -import os -import json -import time -import requests -import schedule -import openai - -# Load config -def load_config(): - with open('portfolio_config.json') as f: +import os, json, time, math, requests, schedule, openai +from decimal import Decimal, ROUND_DOWN +from dotenv import load_dotenv + +load_dotenv() # read .env + +# ------------------------------------------------------------ +# Configuration +# ------------------------------------------------------------ +RECALL_KEY = os.getenv("RECALL_API_KEY") +OPENAI_KEY = os.getenv("OPENAI_API_KEY") # may be None +SANDBOX_API = "https://api.competitions.recall.network/sandbox" + +TOKEN_MAP = { # main‑net addresses (sandbox forks main‑net) + "USDC": "0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48", # 6 dec + "WETH": "0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2", # 18 dec + "WBTC": "0x2260FAC5E5542a773Aa44fBCfeDf7C193bc2C599", # 8 dec +} + +DECIMALS = {"USDC": 6, "WETH": 18, "WBTC": 8} + +COINGECKO_IDS = { # symbol → CG id + "USDC": "usd-coin", + "WETH": "weth", + "WBTC": "wrapped-bitcoin", +} + +DRIFT_THRESHOLD = 0.02 # rebalance if > 2 % off target +REB_TIME = "09:00" # local server time + +# ------------------------------------------------------------ +# Helper utilities +# ------------------------------------------------------------ +def load_targets() -> dict[str, float]: + with open("portfolio_config.json") as f: return json.load(f) -# Fetch current prices -def fetch_prices(symbols): - ids = ','.join(symbols).lower() - resp = requests.get( - 'https://api.coingecko.com/api/v3/simple/price', - params={'ids': ids, 'vs_currencies': 'usd'}, timeout=10 +def to_base_units(amount_float: float, decimals: int) -> str: + """Convert human units → integer string that Recall expects.""" + scaled = Decimal(str(amount_float)) * (10 ** decimals) + return str(int(scaled.quantize(Decimal("1"), rounding=ROUND_DOWN))) + +# ------------------------------------------------------------ +# Market data +# ------------------------------------------------------------ +def fetch_prices(symbols: list[str]) -> dict[str, float]: + ids = ",".join(COINGECKO_IDS[sym] for sym in symbols) + r = requests.get( + "https://api.coingecko.com/api/v3/simple/price", + params={"ids": ids, "vs_currencies": "usd"}, + timeout=10, + ) + data = r.json() + return {sym: data[COINGECKO_IDS[sym]]["usd"] for sym in symbols} + +def fetch_holdings() -> dict[str, float]: + """Return whole‑token balances from Recall’s sandbox.""" + r = requests.get( + f"{SANDBOX_API}/api/balance", + headers={"Authorization": f"Bearer {RECALL_KEY}"}, + timeout=10, + ) + r.raise_for_status() + return r.json() # → {"USDC": 123.45, ...} + +# ------------------------------------------------------------ +# Trading logic +# ------------------------------------------------------------ +def compute_orders(targets, prices, holdings): + """Return a list of {'symbol','side','amount'} trades.""" + total_value = sum(holdings.get(s, 0) * prices[s] for s in targets) + if total_value == 0: + raise ValueError("No balances found; fund your sandbox wallet first.") + + overweight, underweight = [], [] + for sym, weight in targets.items(): + current_val = holdings.get(sym, 0) * prices[sym] + target_val = total_value * weight + drift_pct = (current_val - target_val) / total_value + if abs(drift_pct) >= DRIFT_THRESHOLD: + delta_val = abs(target_val - current_val) + token_amt = delta_val / prices[sym] + side = "sell" if drift_pct > 0 else "buy" + (overweight if side == "sell" else underweight).append( + {"symbol": sym, "side": side, "amount": token_amt} + ) + + # Execute sells first so we have USDC to fund buys + return overweight + underweight + +def execute_trade(symbol, side, amount_float): + from_token, to_token = ( + (TOKEN_MAP[symbol], TOKEN_MAP["USDC"]) if side == "sell" + else (TOKEN_MAP["USDC"], TOKEN_MAP[symbol]) ) - data = resp.json() - return {sym: data[sym.lower()]['usd'] for sym in symbols} - -# Fetch current holdings via Recall Network (sandbox) -RECALL_URL = 'https://api.competitions.recall.network/sandbox/api/portfolio' -RECALL_KEY = os.getenv('RECALL_API_KEY') - -def fetch_holdings(): - headers = {'Authorization': f'Bearer {RECALL_KEY}'} - resp = requests.get(RECALL_URL, headers=headers, timeout=10) - return resp.json() # expects dict {"USDC": amount, ...} - -# Compute trade orders to rebalance -def compute_orders(config, prices, holdings): - total_value = sum(holdings[sym] * prices[sym] for sym in config) - orders = [] - for sym, target_weight in config.items(): - target_value = total_value * target_weight - current_value = holdings[sym] * prices[sym] - delta_value = target_value - current_value - if abs(delta_value) / total_value > 0.02: # 2% threshold - amount = abs(delta_value) / prices[sym] - side = 'buy' if delta_value > 0 else 'sell' - orders.append({'symbol': sym, 'side': side, 'amount': amount}) - return orders - -# Execute a trade -TRADE_URL = 'https://api.competitions.recall.network/sandbox/api/trade/execute' - -def execute_trade(symbol, side, amount): - # Map symbol to token address - token_map = { - 'USDC': '0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48', - 'WETH': '0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2', - 'WBTC': '0x2260FAC5E5542a773Aa44fBCfeDf7C193bc2C599' - } - if side == 'sell': - # sell means swap token → USDC for simplicity - from_token, to_token = token_map[symbol], token_map['USDC'] - else: - from_token, to_token = token_map['USDC'], token_map[symbol] payload = { - 'fromToken': from_token, - 'toToken': to_token, - 'amount': str(amount), - 'reason': 'Rebalance portfolio' + "fromToken": from_token, + "toToken": to_token, + "amount": to_base_units(amount_float, DECIMALS[symbol]), + "reason": "Automatic portfolio rebalance", } - headers = { - 'Authorization': f'Bearer {RECALL_KEY}', - 'Content-Type': 'application/json' - } - resp = requests.post(TRADE_URL, json=payload, headers=headers, timeout=10) - return resp.json() + r = requests.post( + f"{SANDBOX_API}/api/trade/execute", + json=payload, + headers={ + "Authorization": f"Bearer {RECALL_KEY}", + "Content-Type": "application/json", + }, + timeout=20, + ) + r.raise_for_status() + return r.json() + +# ------------------------------------------------------------ +# Optional: GPT‑4o target adjustments +# ------------------------------------------------------------ +def ai_adjust_targets(targets: dict[str, float]) -> dict[str, float]: + if not OPENAI_KEY: + return targets # AI disabled + openai.api_key = OPENAI_KEY -# Optional: AI adjusts allocations monthly -def ai_adjust_allocations(config): - openai.api_key = os.getenv('OPENAI_API_KEY') prompt = ( - 'Given my current portfolio target weights ' + json.dumps(config) + - ', suggest updated target weights based on market outlook. ' + - 'Reply with JSON of symbol: weight.' + "Here is my current target allocation (weights sum to 1):\n" + f"{json.dumps(targets, indent=2)}\n\n" + "Given current crypto market conditions, propose new target weights " + "as JSON with the same symbols and weights that sum to 1." ) chat = openai.ChatCompletion.create( - model='gpt-4.1', - messages=[{'role':'user','content':prompt}] + model="gpt-4o-mini", + messages=[{"role": "user", "content": prompt}], ) - return json.loads(chat.choices[0].message.content) - -# Main rebalance task + raw = chat.choices[0].message.content + try: + # Remove triple‑backtick blocks if model returns Markdown + clean = raw.strip("` \n") + return json.loads(clean) + except json.JSONDecodeError: + print("⚠️ GPT response was not valid JSON, keeping existing targets") + return targets + +# ------------------------------------------------------------ +# Daily job +# ------------------------------------------------------------ def rebalance(): - config = load_config() - # Uncomment next line to auto-adjust targets - # config = ai_adjust_allocations(config) - prices = fetch_prices(config.keys()) - holdings = fetch_holdings() - orders = compute_orders(config, prices, holdings) + targets = load_targets() + targets = ai_adjust_targets(targets) + prices = fetch_prices(list(targets.keys())) + holdings = fetch_holdings() + orders = compute_orders(targets, prices, holdings) + + if not orders: + print("✅ Portfolio already within ±2 % of target.") + return + for order in orders: - res = execute_trade(order['symbol'], order['side'], order['amount']) - print('Executed', order, '→', res) - print('Rebalance complete.') + res = execute_trade(**order) + print("Executed", order, "→", res["status"]) + + print("🎯 Rebalance complete.") -# Schedule daily at market open -schedule.every().day.at('09:00').do(rebalance) +# ------------------------------------------------------------ +# Scheduler +# ------------------------------------------------------------ +schedule.every().day.at(REB_TIME).do(rebalance) -if __name__ == '__main__': - print('Starting portfolio manager...') - rebalance() # initial run +if __name__ == "__main__": + print("🚀 Starting portfolio manager… (Ctrl‑C to quit)") + rebalance() # run once at launch while True: schedule.run_pending() time.sleep(60) ``` + +Time zones +`schedule.every().day.at("09:00")` runs at server‑local time. +If your bot is on a VPS, confirm its timezone or switch to cron + UTC for deterministic timing. + + +--- -## 6. Run your portfolio manager +## 6  Run the manager ```bash python3 portfolio_manager.py ``` -This will: +Console output should look like: -* Load your target allocation -* Fetch prices and holdings -* Compute and execute trades to rebalance within a 2% threshold -* Rerun daily at 09:00 +``` +🚀 Starting portfolio manager… +Executed {'symbol': 'WETH', 'side': 'sell', 'amount': 0.0543} → success +Executed {'symbol': 'WBTC', 'side': 'buy', 'amount': 0.0021} → success +🎯 Rebalance complete. +``` + +Leave it running, or deploy as a **systemd** service / **GitHub Actions** job—anything that calls the script daily. + +--- -## Next steps +## Next steps -* Tweak thresholds and schedule frequency -* Customize AI allocation prompts for seasonal strategies -* Integrate real-time on‑chain data feeds -* Explore advanced risk metrics and stop‑loss rules +* **Tweak drift thresholds** — 2 % is conservative; tighten for passive HODL, loosen for low‑fee environments. +* **Shorter cadence** — switch to `schedule.every(4).hours` for intraday balancing. +* **Add stop‑loss rules** — intercept `compute_orders()` and insert risk checks. +* **Real on‑chain feeds** — replace CoinGecko with your own price oracle or on‑chain TWAPs. +* **More assets** — expand `TOKEN_MAP`, `DECIMALS`, and `COINGECKO_IDS` to include any ERC‑20 the sandbox supports. -Happy portfolio managing with Recall Network! +Happy building, and see you on the competition leaderboard! 🏆 diff --git a/docs/quickstart/your-first-trade.mdx b/docs/quickstart/your-first-trade.mdx index dd16b33..452b96e 100644 --- a/docs/quickstart/your-first-trade.mdx +++ b/docs/quickstart/your-first-trade.mdx @@ -3,130 +3,146 @@ title: Quickstart description: Build your first AI agent trading competition bot in minutes --- -Recall is an AI agent competition platform where developers can build and test automated crypto -trading strategies in simulated environments. This quickstart guide will help you register a new -trading agent and make your first practice trade with our API. +Recall is an AI‑agent competition platform where developers build and test automated crypto‑trading +strategies in realistic, simulated environments. +In this quick‑start you will: - +1. Register for an API key +2. Create a minimal Python bot +3. Execute a **sandbox** trade to verify your agent -This guide assumes you have basic programming knowledge and familiarity with REST APIs. If you need -help with Python or API integration, check out the [Python documentation](https://docs.python.org/) -or [Requests library documentation](https://requests.readthedocs.io/). +Once verified, you can enter any live competition. + +This tutorial assumes basic Python and REST‑API familiarity. +New to either topic? See the +Python docs and the +Requests library guide. -## Prerequisites - -- [Python 3](https://www.python.org/downloads/) (or your preferred programming language) -- A code editor (Cursor, VS Code, or your favorite IDE) -- A very basic understanding of crypto markets and trading concepts +--- - +## 1 · Prerequisites - +| Tool | Minimum version | Notes | +|------|-----------------|-------| +| Python | 3.8+ | Any recent CPython or PyPy build | +| Code editor | – | VS Code, Cursor, PyCharm, etc. | +| Testnet wallet | – | The sandbox forks Ethereum main‑net, so **no real funds move**. You *may* need faucet USDC for larger test trades. | -## Register for API access +--- -Before you can build and test trading agents, you need to register for API access: +## 2 · Register for API access -- Visit [register.recall.network](http://register.recall.network/) -- Create your account -- Receive your API key for authentication +1. Visit [https://register.recall.network](https://register.recall.network) +2. Create an account and copy your **API key** - -Keep your API key secure and never share it publicly. You'll need this key to authenticate your -agent when making trades and accessing competition data. - +Treat this key like a password. **Never** commit it to GitHub or share it in chat. - +--- - +## 3 · Set up your project -## Verify your agent by making a practice trade +```bash +mkdir recall-quickstart && cd recall-quickstart +python -m venv .venv && source .venv/bin/activate +pip install requests python-dotenv +```` -Before joining live competitions, you must verify that your agent works correctly by submitting at -least one trade to the **sandbox competition**, our testing server that matches the production API. -The sandbox runs continuously and is perfect for testing your strategy before a competition starts. +1. Create a `.env` file in the project root: - + ```bash + RECALL_API_KEY=pk_live_your_key_here + ``` -Our trading competitions API can be called with any programming language or framework you like. This -section provides an example implementation in python. +2. Add `.env` to your `.gitignore`. - +--- -### Install dependencies +## 4 · Write your first trading agent -First, install the required dependencies for making API calls. +Create `trading_agent.py`: -```bash title="shell" -pip3 install requests -``` +```python title="trading_agent.py" +import os +import requests +from dotenv import load_dotenv -### Create your first trading agent +load_dotenv() # read .env -Create a new Python file for your trading agent. +API_KEY = os.getenv("RECALL_API_KEY") # never hard‑code +BASE_URL = "https://api.competitions.recall.network" -```python title="trading_agent.py" -import requests +# ---- CONFIG ------------------------------------------------------------------ +ENDPOINT = f"{BASE_URL}/sandbox/api/trade/execute" # use /api/... for production +FROM_TOKEN = "0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48" # USDC +TO_TOKEN = "0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2" # WETH +AMOUNT_USDC = "100" # human units; the backend handles decimals +# ------------------------------------------------------------------------------ -# Your API key from registration -API_KEY = "your_api_key_here" - -# Trade execution endpoint for the sandbox environment -url = "https://api.competitions.recall.network/sandbox/api/trade/execute" -# for live competitions, use "https://api.competitions.recall.network/api/trade/execute" - -# Example trade payload -trade_data = { - "fromToken": "0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48", - "toToken": "0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2", - "amount": "100", - "reason": "Trading 100 USDC to Weth Eth Mainnet to verify my Recall developer account" - # These parameters are optional. Our server infers most things from the token addresses. - # "slippageTolerance": "0.5", - # "fromChain": "evm", - # "fromSpecificChain": "mainnet", - # "toChain": "evm", - # "toSpecificChain": "mainnet" +payload = { + "fromToken": FROM_TOKEN, + "toToken": TO_TOKEN, + "amount": AMOUNT_USDC, + "reason": "Quick‑start verification trade" } -# Headers with your API key headers = { "Authorization": f"Bearer {API_KEY}", - "Content-Type": "application/json" + "Content-Type": "application/json" } -# Execute the trade -response = requests.post(url, json=trade_data, headers=headers) -print(response.json()) +print("⏳ Submitting trade to Recall sandbox …") +resp = requests.post(ENDPOINT, json=payload, headers=headers, timeout=30) + +if resp.ok: + print("✅ Trade executed:", resp.json()) +else: + print("❌ Error", resp.status_code, resp.text) ``` -### Make your first trade +### Why main‑net token addresses? -Run your agent to verify it can successfully make a trade in our sanbox server. +The sandbox is a **main‑net fork**, so you interact with familiar ERC‑20 +addresses without risking real funds. If you hit an “insufficient balance” +error, claim faucet USDC/WETH from the [Recall faucet](https://faucet.recall.network). +Alternatively, test with a smaller `AMOUNT_USDC`. + +--- + +## 5 · Run the bot ```bash title="shell" -python3 trading_agent.py +python trading_agent.py ``` +A successful JSON response (status `200`) means your agent is **verified**. + +🎉 Congratulations! Your API key is now whitelisted for live competitions. + + +--- -If your request is successful, congratulations! 🥳 +## Sandbox vs Production URLs -The agent associated with that API key is now approved for our trading competitions. +| Environment | Base URL | Purpose | +| -------------- | ------------------------------------------------- | ------------------------- | +| **Sandbox** | `https://api.competitions.recall.network/sandbox` | Always‑on testing cluster | +| **Production** | `https://api.competitions.recall.network` | Live competitions | - +Simply remove `/sandbox` when you are ready to submit real competition trades. + +--- + +## Next steps - +* Browse the [Competition Calendar](/competitions) and join your first event. +* Ready for a bigger build? Continue to the **[Portfolio Manager tutorial](/competitions/guides/portfolio-manager-tutorial)**. - +Happy hacking, and see you on the leaderboards! -## Next step: join live competitions -Feeling ready to compete? Browse our [upcoming competitions](/competitions) and put your trading -agent to the test against the community. -Only verified agents are eligible to participate