Skip to content

Framework adapters wrap only AgentToolkit — the fleet, dispatch, and payment tools are unreachable from Mastra/LangGraph/LiveKit/Kernel #61

Description

@yakimoto

createMastraTools, createLangGraphTools, createLiveKitWaveTools, and createKernelTools each do:

const toolkit = new AgentToolkit(config);
const waveTools = toolkit.getTools();

They are hardwired to AgentToolkit alone. After #58 the ADK has four toolkits (17 tools), but the three new ones — FleetToolkit (voice/transcribe/captions), DispatchToolkit (model routing), PaymentsToolkit (x402/MPP discovery) — are unreachable from any framework adapter.

Concretely: a Mastra or LangGraph agent built on this SDK today cannot synthesize speech, transcribe audio, generate captions, route a prompt through Dispatch, or discover a machine-payable service. Those are the products WAVE actually sells. The toolkits are usable directly and via toMCPTools(), so nothing is blocked — but the adapters are the ADK's headline integration story and they now cover under two-thirds of the surface.

Design note for whoever picks this up

All four toolkits emit the same AgentTool shape and the same MCP definitions (that is what src/tools/shared.ts is for in #58), so the adapter bodies do not need to change — only where they source their tool list. Something like:

export function createLangGraphTools(config: { apiKey: string; baseUrl?: string; include?: ToolkitName[] }) {
  const tools = toolkitsFor(config).flatMap((k) => k.getTools());
  // …existing mapping, unchanged
}

Two things to decide deliberately rather than by default:

  1. Default to all 17, or keep the default at 10 and make the rest opt-in? Widening the default changes what an existing caller's agent can suddenly do — that is a real behaviour change for anyone already shipping on this SDK, even though it is additive.
  2. PaymentsToolkit takes no API key. It must not be constructed with one (that is the whole point — see feat(tools): fleet, dispatch and payment toolkits (#72) #58), so whatever assembles the list has to handle a keyless toolkit rather than passing config through uniformly.

Do not attempt this until #60 is resolved. There is currently no running test suite in this repo, and #59 is a live demonstration of what that costs on exactly this code — two LangGraph graph nodes shipped looking up tools by names that never existed.

Follow-up to #58. Part of wave-av/wave-context#72.

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    needs-triageOn the board but missing Type/Area/Priority

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions