Skip to main content
Glama

read.strategy.recommendation

Read-onlyIdempotent

Get rebalancing recommendations for Arcadia accounts to optimize yield by suggesting asset changes based on 1-day APY data.

Instructions

Get a rebalancing recommendation for an Arcadia account — suggests asset changes to optimize yield. Uses 1d APY (not 7d like read.strategy.list), so recommended strategies may differ from the list ranking. APY values are decimal fractions (0.05 = 5%). weekly_earning_difference is in USD.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
account_addressYesArcadia account address
chain_idNoChain ID: 8453 (Base) or 130 (Unichain)

Implementation Reference

  • The tool read.strategy.recommendation is registered in src/tools/read/strategy.ts. It takes an account address and chain ID as input and fetches recommendation data from the Arcadia API client.
    server.registerTool(
      "read.strategy.recommendation",
      {
        annotations: {
          title: "Get Recommendation",
          readOnlyHint: true,
          destructiveHint: false,
          idempotentHint: true,
          openWorldHint: true,
        },
        description:
          "Get a rebalancing recommendation for an Arcadia account — suggests asset changes to optimize yield. Uses 1d APY (not 7d like read.strategy.list), so recommended strategies may differ from the list ranking. APY values are decimal fractions (0.05 = 5%). weekly_earning_difference is in USD.",
        inputSchema: {
          account_address: z.string().describe("Arcadia account address"),
          chain_id: z.number().default(8453).describe("Chain ID: 8453 (Base) or 130 (Unichain)"),
        },
        outputSchema: StrategyRecommendationOutput,
      },
      async ({ account_address, chain_id }) => {
        try {
          const result = await api.getRecommendation(chain_id, account_address);
          const rec = result as Record<string, unknown>;
          if (
            Array.isArray(rec.added_assets) &&
            rec.added_assets.length === 0 &&
            Array.isArray(rec.removed_assets) &&
            rec.removed_assets.length === 0 &&
            Number(rec.current_apy ?? 0) === 0 &&
            Number(rec.proposed_apy ?? 0) === 0
          ) {
            rec.context_note =
              "Account has no active positions — no rebalancing recommendations available.";
          }
          return {
            content: [{ type: "text" as const, text: JSON.stringify(rec, null, 2) }],
            structuredContent: rec,
          };
        } catch (err) {
          return {
            content: [
              {
                type: "text" as const,
                text: `Error: ${err instanceof Error ? err.message : String(err)}`,
              },
            ],
            isError: true,
          };
        }
      },
    );

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/arcadia-finance/arcadia-finance-mcp-server'

If you have feedback or need assistance with the MCP directory API, please join our Discord server