Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
12 changes: 6 additions & 6 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -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",
Expand All @@ -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={
Expand All @@ -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({
Expand Down
2 changes: 1 addition & 1 deletion anime-watch-hub/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -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",

Expand Down
4 changes: 2 additions & 2 deletions anime-watch-hub/app/api/check-platform/route.ts
Original file line number Diff line number Diff line change
Expand Up @@ -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`),
Expand Down Expand Up @@ -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',
Expand Down
10 changes: 5 additions & 5 deletions anime-watch-hub/docs/mino-api-integration.md
Original file line number Diff line number Diff line change
Expand Up @@ -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}.

Expand Down Expand Up @@ -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',
Expand Down Expand Up @@ -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..."
Expand Down Expand Up @@ -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 |

---

Expand Down
6 changes: 3 additions & 3 deletions bestbet/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -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({
Expand Down Expand Up @@ -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:
Expand Down
4 changes: 2 additions & 2 deletions bestbet/app/webagent.ts
Original file line number Diff line number Diff line change
@@ -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;
Expand All @@ -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 }),
Expand Down
4 changes: 2 additions & 2 deletions competitor-analysis/FEATURES.md
Original file line number Diff line number Diff line change
Expand Up @@ -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
```

Expand Down Expand Up @@ -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
Expand Down
4 changes: 2 additions & 2 deletions competitor-analysis/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -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
```
Expand Down Expand Up @@ -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
```

Expand Down
6 changes: 3 additions & 3 deletions competitor-analysis/app/api/scrape-pricing/route.ts
Original file line number Diff line number Diff line change
Expand Up @@ -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;
Expand All @@ -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,
Expand Down
8 changes: 4 additions & 4 deletions competitor-analysis/lib/mino-client.ts
Original file line number Diff line number Diff line change
Expand Up @@ -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;
Expand All @@ -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
*/
Expand All @@ -36,10 +36,10 @@ export async function runMinoAutomation(
apiKey?: string,
verbose: boolean = true
): Promise<MinoResponse> {
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[] = [];
Expand Down
2 changes: 1 addition & 1 deletion fast-qa/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -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-...
Expand Down
4 changes: 2 additions & 2 deletions fast-qa/app/api/execute-tests/route.ts
Original file line number Diff line number Diff line change
Expand Up @@ -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;
Expand Down
6 changes: 3 additions & 3 deletions fast-qa/lib/mino-client.ts
Original file line number Diff line number Diff line change
Expand Up @@ -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;
Expand Down Expand Up @@ -39,10 +39,10 @@ export async function runMinoAutomation(
apiKey?: string,
callbacks?: MinoStreamCallbacks
): Promise<MinoResponse> {
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[] = [];
Expand Down
6 changes: 3 additions & 3 deletions loan-decision-copilot/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -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,
Expand Down Expand Up @@ -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
Expand Down
16 changes: 8 additions & 8 deletions loan-decision-copilot/docs/MINO_API_DOCUMENTATION (1).md
Original file line number Diff line number Diff line change
Expand Up @@ -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 │ │ │
Expand Down Expand Up @@ -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
Expand All @@ -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,
Expand Down Expand Up @@ -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 |
Expand All @@ -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
Expand Down
10 changes: 5 additions & 5 deletions loan-decision-copilot/supabase/functions/analyze-loan/index.ts
Original file line number Diff line number Diff line change
Expand Up @@ -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<string, string> = {
Expand Down Expand Up @@ -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
});
Expand Down
Loading