openpondai/agents/my-openpond
OpenTool app
typescript
import type { ToolProfile } from "opentool";
import { store } from "opentool/store";
import { MY_OPENPOND_TEMPLATE_CONFIG, resolveConnectedApps } from "../src/config";
import {
generateTrade,
generateTradeSchema,
} from "../src/generate-trade";
export const schema = generateTradeSchema;
export const profile: ToolProfile = {
description:
"Generate a structured Hyperliquid trade idea with entry, take profit, stop loss, and sizing based on technicals, recent trade behavior, and connected news context.",
category: "orchestrator",
connectedApps: resolveConnectedApps(),
templateConfig: MY_OPENPOND_TEMPLATE_CONFIG,
};
export async function POST(req: Request) {
const payload = await req.json().catch(() => null);
const parsed = generateTradeSchema.safeParse(payload ?? {});
if (!parsed.success) {
return new Response(
JSON.stringify({
ok: false,
error: parsed.error.issues[0]?.message ?? "invalid request payload",
}),
{
status: 400,
headers: { "content-type": "application/json" },
},
);
}
try {
const result = await generateTrade(parsed.data);
await store({
source: "generate-trade",
ref: `generate-trade-${Date.now()}`,
status: "info",
action: "custom",
metadata: result,
});
return Response.json(result);
} catch (error) {
const message = error instanceof Error ? error.message : "unknown";
await store({
source: "generate-trade",
ref: `generate-trade-${Date.now()}`,
status: "failed",
action: "custom",
metadata: { ok: false, error: message },
});
return new Response(JSON.stringify({ ok: false, error: message }), {
status: 400,
headers: { "content-type": "application/json" },
});
}
}