diff --git a/README.md b/README.md index fb8002e..76b2955 100644 --- a/README.md +++ b/README.md @@ -57,8 +57,8 @@ Here is how to run a simple automation agent: #### cURL ```bash -curl -N -X POST https://mino.ai/v1/automation/run-sse \ - -H "X-API-Key: $MINO_API_KEY" \ +curl -N -X POST https://agent.tinyfish.ai/v1/automation/run-sse \ + -H "X-API-Key: $TINYFISH_API_KEY" \ -H "Content-Type: application/json" \ -d '{ "url": "https://agentql.com", @@ -74,9 +74,9 @@ import os import requests response = requests.post( - "https://mino.ai/v1/automation/run-sse", + "https://agent.tinyfish.ai/v1/automation/run-sse", headers={ - "X-API-Key": os.getenv("MINO_API_KEY"), + "X-API-Key": os.getenv("TINYFISH_API_KEY"), "Content-Type": "application/json", }, json={ @@ -97,10 +97,10 @@ for line in response.iter_lines(): #### TypeScript ```typescript -const response = await fetch("https://mino.ai/v1/automation/run-sse", { +const response = await fetch("https://agent.tinyfish.ai/v1/automation/run-sse", { method: "POST", headers: { - "X-API-Key": process.env.MINO_API_KEY, + "X-API-Key": process.env.TINYFISH_API_KEY, "Content-Type": "application/json", }, body: JSON.stringify({ diff --git a/anime-watch-hub/README.md b/anime-watch-hub/README.md index 588d6de..9ce72f8 100644 --- a/anime-watch-hub/README.md +++ b/anime-watch-hub/README.md @@ -28,7 +28,7 @@ The application employs a two-stage process. After getting search URLs from Gemi ```typescript -const response = await fetch("https://mino.ai/v1/automation/run-sse", { +const response = await fetch("https://agent.tinyfish.ai/v1/automation/run-sse", { method: "POST", diff --git a/anime-watch-hub/app/api/check-platform/route.ts b/anime-watch-hub/app/api/check-platform/route.ts index dd49726..4ca5b19 100644 --- a/anime-watch-hub/app/api/check-platform/route.ts +++ b/anime-watch-hub/app/api/check-platform/route.ts @@ -19,7 +19,7 @@ export async function POST(request: NextRequest) { ) } - const apiKey = process.env.MINO_API_KEY + const apiKey = process.env.TINYFISH_API_KEY if (!apiKey) { return new Response( encoder.encode(`data: ${JSON.stringify({ type: 'ERROR', message: 'Mino API key not configured' })}\n\n`), @@ -60,7 +60,7 @@ Return a JSON object with these fields: If the anime is NOT found or not available, set available to false and explain why in the message. If you encounter a geo-restriction or region block, mention that in the message.` - const minoResponse = await fetch('https://mino.ai/v1/automation/run-sse', { + const minoResponse = await fetch('https://agent.tinyfish.ai/v1/automation/run-sse', { method: 'POST', headers: { 'Content-Type': 'application/json', diff --git a/anime-watch-hub/docs/mino-api-integration.md b/anime-watch-hub/docs/mino-api-integration.md index fe31289..8c03c8d 100644 --- a/anime-watch-hub/docs/mino-api-integration.md +++ b/anime-watch-hub/docs/mino-api-integration.md @@ -155,7 +155,7 @@ import { NextRequest } from 'next/server'; export async function POST(request: NextRequest) { const { animeTitle, platformName, searchUrl } = await request.json(); - const apiKey = process.env.MINO_API_KEY; + const apiKey = process.env.TINYFISH_API_KEY; const goal = `You are checking if the anime "${animeTitle}" is available to stream on ${platformName}. @@ -184,7 +184,7 @@ Return a JSON object with these fields: If the anime is NOT found or not available, set available to false and explain why in the message.`; // Call Mino API with SSE - const minoResponse = await fetch('https://mino.ai/v1/automation/run-sse', { + const minoResponse = await fetch('https://agent.tinyfish.ai/v1/automation/run-sse', { method: 'POST', headers: { 'Content-Type': 'application/json', @@ -294,9 +294,9 @@ curl -X POST https://your-app.vercel.app/api/check-platform \ #### 3. Direct Mino API Call ```bash -curl -X POST https://mino.ai/v1/automation/run-sse \ +curl -X POST https://agent.tinyfish.ai/v1/automation/run-sse \ -H "Content-Type: application/json" \ - -H "X-API-Key: YOUR_MINO_API_KEY" \ + -H "X-API-Key: YOUR_TINYFISH_API_KEY" \ -d '{ "url": "https://www.crunchyroll.com/search?q=attack+on+titan", "goal": "Check if Attack on Titan is available on this platform..." @@ -441,7 +441,7 @@ data: {"type":"COMPLETE","resultJson":"{\"available\":false,\"message\":\"Attack | Variable | Description | |----------|-------------| | `GEMINI_API_KEY` | Google Gemini API key for platform URL discovery | -| `MINO_API_KEY` | Mino API key for browser automation | +| `TINYFISH_API_KEY` | Mino API key for browser automation | --- diff --git a/bestbet/README.md b/bestbet/README.md index 17ddf8c..6562e2a 100644 --- a/bestbet/README.md +++ b/bestbet/README.md @@ -14,10 +14,10 @@ The app calls the TinyFish SSE endpoint to run a web agent on each selected spor ```typescript -const response = await fetch("https://mino.ai/v1/automation/run-sse", { +const response = await fetch("https://agent.tinyfish.ai/v1/automation/run-sse", { method: "POST", headers: { - "X-API-Key": process.env.NEXT_PUBLIC_MINO_API_KEY, + "X-API-Key": process.env.NEXT_PUBLIC_TINYFISH_API_KEY, "Content-Type": "application/json", }, body: JSON.stringify({ @@ -54,7 +54,7 @@ npm install 2. Create a `.env.local` file with your TinyFish API key: ``` -NEXT_PUBLIC_MINO_API_KEY=your_tinyfish_api_key_here +NEXT_PUBLIC_TINYFISH_API_KEY=your_tinyfish_api_key_here ``` 3. Start the dev server: diff --git a/bestbet/app/webagent.ts b/bestbet/app/webagent.ts index 75dba22..76058ed 100644 --- a/bestbet/app/webagent.ts +++ b/bestbet/app/webagent.ts @@ -1,4 +1,4 @@ -const ENDPOINT = "https://mino.ai/v1/automation/run-sse"; +const ENDPOINT = "https://agent.tinyfish.ai/v1/automation/run-sse"; export type MinoSSECallbacks = { onStreamingUrl?: (url: string) => void; @@ -13,7 +13,7 @@ export async function runMinoSSE( const response = await fetch(ENDPOINT, { method: "POST", headers: { - "X-API-Key": process.env.NEXT_PUBLIC_MINO_API_KEY!, + "X-API-Key": process.env.NEXT_PUBLIC_TINYFISH_API_KEY!, "Content-Type": "application/json", }, body: JSON.stringify({ url, goal }), diff --git a/competitor-analysis/FEATURES.md b/competitor-analysis/FEATURES.md index d6320c2..8c799ad 100644 --- a/competitor-analysis/FEATURES.md +++ b/competitor-analysis/FEATURES.md @@ -271,7 +271,7 @@ When clicking a competitor row, shows: ## Environment Variables ```bash -MINO_API_KEY= # Mino API key for scraping +TINYFISH_API_KEY= # Mino API key for scraping OPENROUTER_API_KEY= # OpenRouter API key for AI ``` @@ -314,7 +314,7 @@ npm install # Set environment variables cp .env.example .env.local -# Add MINO_API_KEY and OPENROUTER_API_KEY +# Add TINYFISH_API_KEY and OPENROUTER_API_KEY # Run development server npm run dev diff --git a/competitor-analysis/README.md b/competitor-analysis/README.md index 13300d4..9a25eeb 100644 --- a/competitor-analysis/README.md +++ b/competitor-analysis/README.md @@ -22,7 +22,7 @@ The Mino API powers browser automation for this use case. See the code snippet b ```bash npm install -export MINO_API_KEY=your_key +export TINYFISH_API_KEY=your_key export OPENROUTER_API_KEY=your_key npm run dev ``` @@ -51,7 +51,7 @@ npm install 3. Create `.env.local` file: ```bash -MINO_API_KEY=xxx # Browser automation +TINYFISH_API_KEY=xxx # Browser automation OPENROUTER_API_KEY=xxx # AI URL generation + pricing analysis ``` diff --git a/competitor-analysis/app/api/scrape-pricing/route.ts b/competitor-analysis/app/api/scrape-pricing/route.ts index a4750fe..7267578 100644 --- a/competitor-analysis/app/api/scrape-pricing/route.ts +++ b/competitor-analysis/app/api/scrape-pricing/route.ts @@ -333,13 +333,13 @@ async function scrapePricingPage( timestamp: startTime, }); - const apiKey = process.env.MINO_API_KEY; + const apiKey = process.env.TINYFISH_API_KEY; if (!apiKey) { await sendEvent({ type: 'competitor_error', competitor: competitor.name, id: competitor.id, - error: 'MINO_API_KEY not configured', + error: 'TINYFISH_API_KEY not configured', timestamp: Date.now(), }); return null; @@ -350,7 +350,7 @@ async function scrapePricingPage( const goal = SCRAPING_GOALS[detailLevel]; console.log(`[Scrape] Using ${detailLevel} detail level for ${competitor.name}`); - const minoResponse = await fetch('https://mino.ai/v1/automation/run-sse', { + const minoResponse = await fetch('https://agent.tinyfish.ai/v1/automation/run-sse', { method: 'POST', headers: { 'X-API-Key': apiKey, diff --git a/competitor-analysis/lib/mino-client.ts b/competitor-analysis/lib/mino-client.ts index 6c8f81f..c3a2633 100644 --- a/competitor-analysis/lib/mino-client.ts +++ b/competitor-analysis/lib/mino-client.ts @@ -4,7 +4,7 @@ import { parseSSELine, isCompleteEvent, isErrorEvent, formatStepMessage, MinoEvent } from "./utils"; -const MINO_API_URL = "https://mino.ai/v1/automation/run-sse"; +const MINO_API_URL = "https://agent.tinyfish.ai/v1/automation/run-sse"; export interface MinoRequestConfig { url: string; @@ -27,7 +27,7 @@ export interface MinoResponse { /** * Execute a Mino automation task and return the parsed result * @param config - Automation configuration - * @param apiKey - Mino API key (defaults to process.env.MINO_API_KEY) + * @param apiKey - Mino API key (defaults to process.env.TINYFISH_API_KEY) * @param verbose - Log step-by-step progress (default: true) * @returns Promise with the automation result */ @@ -36,10 +36,10 @@ export async function runMinoAutomation( apiKey?: string, verbose: boolean = true ): Promise { - const key = apiKey || process.env.MINO_API_KEY; + const key = apiKey || process.env.TINYFISH_API_KEY; if (!key) { - throw new Error("MINO_API_KEY is required. Set it in .env or pass as parameter."); + throw new Error("TINYFISH_API_KEY is required. Set it in .env or pass as parameter."); } const events: MinoEvent[] = []; diff --git a/fast-qa/README.md b/fast-qa/README.md index e38bb4f..477c9d2 100644 --- a/fast-qa/README.md +++ b/fast-qa/README.md @@ -95,7 +95,7 @@ npm install 3. Create `.env.local` file: ```bash # Mino API Key (required for test execution) -MINO_API_KEY=sk-mino-... +TINYFISH_API_KEY=sk-mino-... # OpenRouter API Key (required for AI test generation) OPENROUTER_API_KEY=sk-or-... diff --git a/fast-qa/app/api/execute-tests/route.ts b/fast-qa/app/api/execute-tests/route.ts index d593da7..ecfd68b 100644 --- a/fast-qa/app/api/execute-tests/route.ts +++ b/fast-qa/app/api/execute-tests/route.ts @@ -69,13 +69,13 @@ export async function POST(request: NextRequest) { return; } - const apiKey = process.env.MINO_API_KEY; + const apiKey = process.env.TINYFISH_API_KEY; if (!apiKey) { await sendEvent({ type: 'test_error', testCaseId: 'system', timestamp: Date.now(), - data: { error: 'MINO_API_KEY not configured' }, + data: { error: 'TINYFISH_API_KEY not configured' }, }); await closeWriter(); return; diff --git a/fast-qa/lib/mino-client.ts b/fast-qa/lib/mino-client.ts index 45277d9..6250b47 100644 --- a/fast-qa/lib/mino-client.ts +++ b/fast-qa/lib/mino-client.ts @@ -4,7 +4,7 @@ import { parseSSELine, isCompleteEvent, isErrorEvent, formatStepMessage, MinoEvent } from "./utils"; -const MINO_API_URL = "https://mino.ai/v1/automation/run-sse"; +const MINO_API_URL = "https://agent.tinyfish.ai/v1/automation/run-sse"; export interface MinoRequestConfig { url: string; @@ -39,10 +39,10 @@ export async function runMinoAutomation( apiKey?: string, callbacks?: MinoStreamCallbacks ): Promise { - const key = apiKey || process.env.MINO_API_KEY; + const key = apiKey || process.env.TINYFISH_API_KEY; if (!key) { - throw new Error("MINO_API_KEY is required. Set it in .env or pass as parameter."); + throw new Error("TINYFISH_API_KEY is required. Set it in .env or pass as parameter."); } const events: MinoEvent[] = []; diff --git a/loan-decision-copilot/README.md b/loan-decision-copilot/README.md index bbf4f40..2724bd1 100644 --- a/loan-decision-copilot/README.md +++ b/loan-decision-copilot/README.md @@ -40,11 +40,11 @@ For each discovered bank: ```typescript -const response = await fetch("https://mino.ai/v1/automation/run-sse", { +const response = await fetch("https://agent.tinyfish.ai/v1/automation/run-sse", { method: "POST", headers: { "Content-Type": "application/json", - "X-API-Key": MINO_API_KEY, + "X-API-Key": TINYFISH_API_KEY, }, body: JSON.stringify({ url: bankUrl, @@ -79,7 +79,7 @@ Return structured JSON with your findings. | Variable | Description | Required | |----------|-------------|----------| -| `MINO_API_KEY` | TinyFish Web Agent [API key](https://mino.ai) | ✅ | +| `TINYFISH_API_KEY` | TinyFish Web Agent [API key](https://mino.ai) | ✅ | | `LOVABLE_API_KEY` | Lovable AI Gateway key | ✅ | ### Setup diff --git a/loan-decision-copilot/docs/MINO_API_DOCUMENTATION (1).md b/loan-decision-copilot/docs/MINO_API_DOCUMENTATION (1).md index d9c1763..a7ab56c 100644 --- a/loan-decision-copilot/docs/MINO_API_DOCUMENTATION (1).md +++ b/loan-decision-copilot/docs/MINO_API_DOCUMENTATION (1).md @@ -74,7 +74,7 @@ LoanLens is a loan comparison application that automates the extraction of loan │ │ │ │ │ │ ┌─────────────────────────────────────────────────────────────────┐ │ │ │ │ │ MINO API (SSE Stream) │ │ │ -│ │ │ - Endpoint: https://mino.ai/v1/automation/run-sse │ │ │ +│ │ │ - Endpoint: https://agent.tinyfish.ai/v1/automation/run-sse │ │ │ │ │ │ - Browser agent navigates to URL │ │ │ │ │ │ - Extracts loan details (rates, terms, eligibility) │ │ │ │ │ │ - Streams live preview URL + status updates │ │ │ @@ -237,9 +237,9 @@ serve(async (req) => { ); } - const MINO_API_KEY = Deno.env.get("MINO_API_KEY"); - if (!MINO_API_KEY) { - throw new Error("MINO_API_KEY is not configured"); + const TINYFISH_API_KEY = Deno.env.get("TINYFISH_API_KEY"); + if (!TINYFISH_API_KEY) { + throw new Error("TINYFISH_API_KEY is not configured"); } // Dynamic goal based on loan type @@ -257,11 +257,11 @@ serve(async (req) => { send({ type: "STATUS", message: "Connecting to browser agent..." }); // Call Mino API with SSE streaming - const minoResponse = await fetch("https://mino.ai/v1/automation/run-sse", { + const minoResponse = await fetch("https://agent.tinyfish.ai/v1/automation/run-sse", { method: "POST", headers: { "Content-Type": "application/json", - "X-API-Key": MINO_API_KEY, + "X-API-Key": TINYFISH_API_KEY, }, body: JSON.stringify({ url, @@ -571,7 +571,7 @@ interface LoanAnalysisResult { | Error | Cause | Resolution | |-------|-------|------------| -| `MINO_API_KEY is not configured` | Missing API key in environment | Add secret via Lovable dashboard | +| `TINYFISH_API_KEY is not configured` | Missing API key in environment | Add secret via Lovable dashboard | | `Mino API error: 429` | Rate limiting | Implement exponential backoff | | `timeout` | Page took too long | Increase timeout (currently 5 min) | | `Invalid response from bank discovery` | AI returned malformed JSON | Retry or adjust prompt | @@ -590,7 +590,7 @@ data: {"type":"ERROR","message":"Failed to load page: Connection timeout"} | Variable | Description | |----------|-------------| -| `MINO_API_KEY` | API key for Mino browser automation | +| `TINYFISH_API_KEY` | API key for Mino browser automation | | `LOVABLE_API_KEY` | Auto-configured for Lovable AI Gateway | ### Timeout Configuration diff --git a/loan-decision-copilot/supabase/functions/analyze-loan/index.ts b/loan-decision-copilot/supabase/functions/analyze-loan/index.ts index 50e68bf..d6c651c 100644 --- a/loan-decision-copilot/supabase/functions/analyze-loan/index.ts +++ b/loan-decision-copilot/supabase/functions/analyze-loan/index.ts @@ -20,9 +20,9 @@ serve(async (req) => { ); } - const MINO_API_KEY = Deno.env.get("MINO_API_KEY"); - if (!MINO_API_KEY) { - throw new Error("MINO_API_KEY is not configured"); + const TINYFISH_API_KEY = Deno.env.get("TINYFISH_API_KEY"); + if (!TINYFISH_API_KEY) { + throw new Error("TINYFISH_API_KEY is not configured"); } const loanTypeMap: Record = { @@ -77,11 +77,11 @@ Be objective and factual. If information is not available, indicate "Not specifi try { send({ type: "STATUS", message: "Connecting to browser agent..." }); - const minoResponse = await fetch("https://mino.ai/v1/automation/run-sse", { + const minoResponse = await fetch("https://agent.tinyfish.ai/v1/automation/run-sse", { method: "POST", headers: { "Content-Type": "application/json", - "X-API-Key": MINO_API_KEY, + "X-API-Key": TINYFISH_API_KEY, }, body: JSON.stringify({ url, goal, timeout: 300000 }), // 5 minute timeout }); diff --git a/research-sentry/README.md b/research-sentry/README.md index 149aacd..5e36b4e 100644 --- a/research-sentry/README.md +++ b/research-sentry/README.md @@ -10,10 +10,10 @@ https://voice-research.vercel.app/ ## TinyFish API usage (snippet) ```ts -const res = await fetch("https://mino.ai/v1/automation/run-sse", { +const res = await fetch("https://agent.tinyfish.ai/v1/automation/run-sse", { method: "POST", headers: { - "X-API-Key": process.env.MINO_API_KEY!, + "X-API-Key": process.env.TINYFISH_API_KEY!, "Content-Type": "application/json", }, body: JSON.stringify({ @@ -28,7 +28,7 @@ const res = await fetch("https://mino.ai/v1/automation/run-sse", { 1. Install deps: `npm install` 2. Create `.env.local`: ``` -MINO_API_KEY=your_tinyfish_key +TINYFISH_API_KEY=your_tinyfish_key OPENAI_API_KEY=your_openai_key ``` 3. Start dev server: `npm run dev` diff --git a/research-sentry/lib/mino.ts b/research-sentry/lib/mino.ts index 8e9927f..22de50b 100644 --- a/research-sentry/lib/mino.ts +++ b/research-sentry/lib/mino.ts @@ -1,5 +1,5 @@ // TinyFish Web Agent Client -// Endpoint: https://mino.ai/v1/automation/run-sse +// Endpoint: https://agent.tinyfish.ai/v1/automation/run-sse export async function runMinoAutomation( url: string, @@ -7,10 +7,10 @@ export async function runMinoAutomation( stealth = false, options?: { timeoutMs?: number } ): Promise { - const apiKey = process.env.MINO_API_KEY; + const apiKey = process.env.TINYFISH_API_KEY; if (!apiKey) { - console.error('[Mino] MINO_API_KEY not set in environment'); + console.error('[Mino] TINYFISH_API_KEY not set in environment'); return null; } @@ -23,7 +23,7 @@ export async function runMinoAutomation( const timeout = timeoutMs ? setTimeout(() => controller.abort(), timeoutMs) : null; try { - const res = await fetch('https://mino.ai/v1/automation/run-sse', { + const res = await fetch('https://agent.tinyfish.ai/v1/automation/run-sse', { method: 'POST', headers: { 'X-API-Key': apiKey, diff --git a/research-sentry/voice-research-project.txt b/research-sentry/voice-research-project.txt index 02b4926..29397bf 100644 --- a/research-sentry/voice-research-project.txt +++ b/research-sentry/voice-research-project.txt @@ -53,7 +53,7 @@ AI-powered research paper discovery using voice or text. 2. cp .env.local.example .env.local 3. Add your API keys - OPENAI_API_KEY - - MINO_API_KEY + - TINYFISH_API_KEY 4. npm run dev ## Deploy @@ -160,7 +160,7 @@ FILE: .env.local.example ------------------------------------------------------------ # Rename to .env.local and add your keys OPENAI_API_KEY=sk-your-key-here -MINO_API_KEY=your-mino-key-here +TINYFISH_API_KEY=your-mino-key-here ================================================================================ @@ -241,10 +241,10 @@ export async function transcribeAudio(buffer: Buffer, filename = 'audio.webm') { FILE: lib/mino.ts ------------------------------------------------------------ export async function runMinoAutomation(url: string, goal: string, stealth = false) { - const res = await fetch('https://mino.ai/v1/automation/run-sse', { + const res = await fetch('https://agent.tinyfish.ai/v1/automation/run-sse', { method: 'POST', headers: { - 'X-API-Key': process.env.MINO_API_KEY!, + 'X-API-Key': process.env.TINYFISH_API_KEY!, 'Content-Type': 'application/json', }, body: JSON.stringify({ url, goal, browser_profile: stealth ? 'stealth' : 'lite' }), diff --git a/stay-scout-hub/README.md b/stay-scout-hub/README.md index 88efbce..3029e78 100644 --- a/stay-scout-hub/README.md +++ b/stay-scout-hub/README.md @@ -30,10 +30,10 @@ For every suggested area, a Mino agent: ### Example Mino API Call ```ts -const response = await fetch("https://mino.ai/v1/automation/run-sse", { +const response = await fetch("https://agent.tinyfish.ai/v1/automation/run-sse", { method: "POST", headers: { - "X-API-Key": process.env.MINO_API_KEY, + "X-API-Key": process.env.TINYFISH_API_KEY, "Content-Type": "application/json", }, body: JSON.stringify({ @@ -134,7 +134,7 @@ npm install 2. Create a .env.local file: ```bash GEMINI_API_KEY=your_gemini_api_key -MINO_API_KEY=your_mino_api_key +TINYFISH_API_KEY=your_mino_api_key ``` 3. Start the dev server: @@ -147,7 +147,7 @@ npm run dev ## Environment Variables - GEMINI_API_KEY - Area discovery and neighborhood reasoning -- MINO_API_KEY - Live browser automation for area research +- TINYFISH_API_KEY - Live browser automation for area research ## Notes diff --git a/stay-scout-hub/docs/MINO_AREA_RESEARCH_API.md b/stay-scout-hub/docs/MINO_AREA_RESEARCH_API.md index 19aa5b4..aea8735 100644 --- a/stay-scout-hub/docs/MINO_AREA_RESEARCH_API.md +++ b/stay-scout-hub/docs/MINO_AREA_RESEARCH_API.md @@ -96,7 +96,7 @@ User Request | API | Endpoint | Auth | Rate Limits | |-----|----------|------|-------------| | Gemini | `generativelanguage.googleapis.com/v1beta/models/gemini-2.0-flash:generateContent` | API Key | Standard Gemini limits | -| Mino | `mino.ai/v1/automation/run-sse` | X-API-Key header | Per-account limits | +| Mino | `agent.tinyfish.ai/v1/automation/run-sse` | X-API-Key header | Per-account limits | --- @@ -370,8 +370,8 @@ async function searchHotelAreas(city: string, purpose: string) { import requests import json -MINO_API_URL = "https://mino.ai/v1/automation/run-sse" -MINO_API_KEY = "your-mino-api-key" +MINO_API_URL = "https://agent.tinyfish.ai/v1/automation/run-sse" +TINYFISH_API_KEY = "your-mino-api-key" def research_area_with_mino(area_name: str, city: str, purpose: str): """ @@ -416,7 +416,7 @@ RETURN JSON ONLY: response = requests.post( MINO_API_URL, headers={ - "X-API-Key": MINO_API_KEY, + "X-API-Key": TINYFISH_API_KEY, "Content-Type": "application/json", }, json={ @@ -622,13 +622,13 @@ Both edge functions provide fallback data if the primary API fails: | Variable | Required | Description | |----------|----------|-------------| | `GEMINI_API_KEY` | Yes | Google AI API key for area discovery | -| `MINO_API_KEY` | Yes | Mino API key for browser automation | +| `TINYFISH_API_KEY` | Yes | Mino API key for browser automation | --- ## Quick Start Checklist -1. ✅ Set `GEMINI_API_KEY` and `MINO_API_KEY` in your environment +1. ✅ Set `GEMINI_API_KEY` and `TINYFISH_API_KEY` in your environment 2. ✅ Deploy `discover-areas` and `research-area` edge functions 3. ✅ Implement SSE parsing in your frontend 4. ✅ Handle the 180-second timeout gracefully diff --git a/stay-scout-hub/supabase/functions/check-platform/index.ts b/stay-scout-hub/supabase/functions/check-platform/index.ts index 413200a..a5f8e3f 100644 --- a/stay-scout-hub/supabase/functions/check-platform/index.ts +++ b/stay-scout-hub/supabase/functions/check-platform/index.ts @@ -5,8 +5,8 @@ const corsHeaders = { 'Access-Control-Allow-Headers': 'authorization, x-client-info, apikey, content-type', }; -const MINO_API_KEY = Deno.env.get('MINO_API_KEY'); -const MINO_API_URL = 'https://mino.ai/v1/automation/run-sse'; +const TINYFISH_API_KEY = Deno.env.get('TINYFISH_API_KEY'); +const MINO_API_URL = 'https://agent.tinyfish.ai/v1/automation/run-sse'; Deno.serve(async (req) => { if (req.method === 'OPTIONS') { @@ -23,9 +23,9 @@ Deno.serve(async (req) => { ); } - if (!MINO_API_KEY) { + if (!TINYFISH_API_KEY) { return new Response( - JSON.stringify({ error: 'MINO_API_KEY not configured' }), + JSON.stringify({ error: 'TINYFISH_API_KEY not configured' }), { status: 500, headers: { ...corsHeaders, 'Content-Type': 'application/json' } } ); } @@ -138,7 +138,7 @@ RETURN JSON ONLY: const minoResponse = await fetch(MINO_API_URL, { method: 'POST', headers: { - 'X-API-Key': MINO_API_KEY!, + 'X-API-Key': TINYFISH_API_KEY!, 'Content-Type': 'application/json', }, body: JSON.stringify({ diff --git a/stay-scout-hub/supabase/functions/reasearch-area/index.ts b/stay-scout-hub/supabase/functions/reasearch-area/index.ts index 379dd89..2be9a99 100644 --- a/stay-scout-hub/supabase/functions/reasearch-area/index.ts +++ b/stay-scout-hub/supabase/functions/reasearch-area/index.ts @@ -5,8 +5,8 @@ const corsHeaders = { 'Access-Control-Allow-Headers': 'authorization, x-client-info, apikey, content-type', }; -const MINO_API_KEY = Deno.env.get('MINO_API_KEY'); -const MINO_API_URL = 'https://mino.ai/v1/automation/run-sse'; +const TINYFISH_API_KEY = Deno.env.get('TINYFISH_API_KEY'); +const MINO_API_URL = 'https://agent.tinyfish.ai/v1/automation/run-sse'; Deno.serve(async (req) => { if (req.method === 'OPTIONS') { @@ -23,9 +23,9 @@ Deno.serve(async (req) => { ); } - if (!MINO_API_KEY) { + if (!TINYFISH_API_KEY) { return new Response( - JSON.stringify({ error: 'MINO_API_KEY not configured' }), + JSON.stringify({ error: 'TINYFISH_API_KEY not configured' }), { status: 500, headers: { ...corsHeaders, 'Content-Type': 'application/json' } } ); } @@ -102,7 +102,7 @@ RETURN JSON ONLY (no markdown): const minoResponse = await fetch(MINO_API_URL, { method: 'POST', headers: { - 'X-API-Key': MINO_API_KEY!, + 'X-API-Key': TINYFISH_API_KEY!, 'Content-Type': 'application/json', }, body: JSON.stringify({ diff --git a/summer-school-finder/README.md b/summer-school-finder/README.md index 6fbbb35..9d65c17 100644 --- a/summer-school-finder/README.md +++ b/summer-school-finder/README.md @@ -10,7 +10,7 @@ An AI-powered web app that discovers and compares summer school programs from un ## Code snippet - ```bash -const response = await fetch("https://mino.ai/v1/automation/run-sse", { +const response = await fetch("https://agent.tinyfish.ai/v1/automation/run-sse", { method: "POST", headers: { "Content-Type": "application/json", diff --git a/summer-school-finder/supabase/functions/mino-search-stream/index.ts b/summer-school-finder/supabase/functions/mino-search-stream/index.ts index e9b3da3..03bc18e 100644 --- a/summer-school-finder/supabase/functions/mino-search-stream/index.ts +++ b/summer-school-finder/supabase/functions/mino-search-stream/index.ts @@ -13,19 +13,19 @@ serve(async (req) => { try { const { url, goal } = await req.json(); - const MINO_API_KEY = Deno.env.get("MINO_API_KEY"); - if (!MINO_API_KEY) { - throw new Error("MINO_API_KEY is not configured"); + const TINYFISH_API_KEY = Deno.env.get("TINYFISH_API_KEY"); + if (!TINYFISH_API_KEY) { + throw new Error("TINYFISH_API_KEY is not configured"); } console.log(`Starting Mino SSE agent for URL: ${url}`); // Call Mino API with SSE streaming - const response = await fetch("https://mino.ai/v1/automation/run-sse", { + const response = await fetch("https://agent.tinyfish.ai/v1/automation/run-sse", { method: "POST", headers: { "Content-Type": "application/json", - "X-API-Key": MINO_API_KEY, + "X-API-Key": TINYFISH_API_KEY, }, body: JSON.stringify({ url, goal }), }); diff --git a/summer-school-finder/supabase/functions/mino-search/index.ts b/summer-school-finder/supabase/functions/mino-search/index.ts index 6240310..106bc07 100644 --- a/summer-school-finder/supabase/functions/mino-search/index.ts +++ b/summer-school-finder/supabase/functions/mino-search/index.ts @@ -13,19 +13,19 @@ serve(async (req) => { try { const { url, goal } = await req.json(); - const MINO_API_KEY = Deno.env.get("MINO_API_KEY"); - if (!MINO_API_KEY) { - throw new Error("MINO_API_KEY is not configured"); + const TINYFISH_API_KEY = Deno.env.get("TINYFISH_API_KEY"); + if (!TINYFISH_API_KEY) { + throw new Error("TINYFISH_API_KEY is not configured"); } console.log(`Starting Mino agent for URL: ${url}`); // Call Mino API with SSE streaming - const response = await fetch("https://mino.ai/v1/automation/run-sse", { + const response = await fetch("https://agent.tinyfish.ai/v1/automation/run-sse", { method: "POST", headers: { "Content-Type": "application/json", - "X-API-Key": MINO_API_KEY, + "X-API-Key": TINYFISH_API_KEY, }, body: JSON.stringify({ url, goal }), }); diff --git a/tinyskills/README.md b/tinyskills/README.md index 8b90e2c..79f98e8 100644 --- a/tinyskills/README.md +++ b/tinyskills/README.md @@ -124,7 +124,7 @@ npm install 3. Create a `.env.local` file with your API keys: ``` -MINO_API_KEY=your_tinyfish_api_key_here +TINYFISH_API_KEY=your_tinyfish_api_key_here OPENROUTER_API_KEY=your_openrouter_api_key_here ``` diff --git a/tinyskills/app/api/scrape-sources/route.ts b/tinyskills/app/api/scrape-sources/route.ts index 510db8e..2965dea 100644 --- a/tinyskills/app/api/scrape-sources/route.ts +++ b/tinyskills/app/api/scrape-sources/route.ts @@ -48,7 +48,7 @@ export async function POST(request: Request) { return; } - const apiKey = process.env.MINO_API_KEY; + const apiKey = process.env.TINYFISH_API_KEY; if (!apiKey) { await sendEvent({ type: "error", error: "Mino API key not configured" }); await closeWriter(); diff --git a/tinyskills/lib/mino-client.ts b/tinyskills/lib/mino-client.ts index b00b020..c00be03 100644 --- a/tinyskills/lib/mino-client.ts +++ b/tinyskills/lib/mino-client.ts @@ -11,7 +11,7 @@ import { isSystemEvent, } from "./utils"; -const MINO_API_URL = "https://mino.ai/v1/automation/run-sse"; +const MINO_API_URL = "https://agent.tinyfish.ai/v1/automation/run-sse"; export interface MinoRequestConfig { url: string;