Speakeasy Logo
Skip to Content

Introducing Dynamic Toolsets v2. Our new approach combines the strengths of both methods into a unified system that exposes three core tools: search_tools, describe_tools, and execute_tool. The key insight is that tool descriptions provide structure and discoverability, while semantic search provides efficiency and natural language discovery. Together, they create a system that scales naturally without sacrificing usability.

Dynamic Toolsets v2

Features

  • Gram Functions composition - Gram instances are now composable. This allows some similarity to Hono’s grouping pattern, making it possible to split and organize Gram Functions code bases more than before.

    Before:

    const gram = new Gram({ envSchema: { TRAIN_API_KEY: z.string().describe("API key for the train service"), FLIGHT_API_KEY: z.string().describe("API key for the flight service"), }, }) .tool({ name: "train_book", description: "Books a train ticket", }) .tool({ name: "train_status", description: "Gets the status of a train", }) .tool({ name: "flight_book", description: "Books a flight ticket", }) .tool({ name: "flight_status", description: "Gets the status of a flight", });

    Now, with composability:

    // train.ts const trainGram = new Gram({ envSchema: { TRAIN_API_KEY: z.string().describe("API key for the train service"), }, }) .tool({ name: "train_book", description: "Books a train ticket", }) .tool({ name: "train_status", description: "Gets the status of a train", }); // flight.ts const flightGram = new Gram({ envSchema: { FLIGHT_API_KEY: z.string().describe("API key for the flight service"), }, }) .tool({ name: "flight_book", description: "Books a flight ticket", }) .tool({ name: "flight_status", description: "Gets the status of a flight", }); // index.ts import { trainGram } from './train' import { flightGram } from './flight' const travelGram = new Gram() .extend(trainGram) .extend(flightGram);
  • Integrate dynamic toolsets v2 with progressive and semantic search in one feature

  • Introduce announcement modal for new Gram Functions release

  • Add Resend example demonstrating email reminders via the Resend API

  • Support non-blocking deployment creation for non-intrusive deployment initiation

  • Update Gram description tagline and rearrange sidebar UI elements

  • Index embedding tags to enhance search and retrieval operations

  • Add tags to embeddings table for dynamic toolsets phase two

Fixes

  • Wrap long environment variable names in Playground auth tab to prevent overflow
  • Fix Moonshine button issues and adjust various UI elements
  • Ensure dark mode compatibility for Shiki themes
  • Increase function reap batch size for improved resource recovery
  • Enhance deployment tracking and local Gram CLI setup processes
  • Update esbuild configuration with CommonJS require shim for better compatibility
  • Correct textual content in create-function CLI for improved clarity

Last updated on

Organize your
dev universe,

faster and easier.

Try Speakeasy Now