FAQ + Objections

Does Plugsky support function calling?

Yes — function and tool calling is live on supported models through the OpenAI-compatible chat completions API, using the same tools and tool_choice payload shape you already know. You define JSON schemas, the model returns structured tool calls, and your code executes them. Tool-calling quality and parallel-call support vary by model, so validate schemas against the capability matrix.

Key facts

StatusLive on supported models
API shapeOpenAI-compatible tools, tool_choice and tool_calls
StreamingTool calls work with streamed responses
JSON modeLive for structured output alongside tools
Model coverageVaries per model — check the capability matrix
Parallel callsSupported where the model supports it
AgentsBuild agent loops with function calling plus your executor
Free tier2 free AI models (plugsky-micro, plugsky-lite), no card

TL;DR

  • Tool calling is live and keeps the OpenAI request and response shape.
  • Schemas are ordinary JSON Schema; your code remains the executor.
  • Model coverage varies — confirm before you design around one model.
  • Streaming and tool calls work together for responsive agent UIs.
  • Test with malformed inputs and timeouts, not just the happy path.

How it works, step by step

  1. Define each tool as a JSON Schema with tight property descriptions and required fields.
  2. Send the tool list with the request and parse tool_calls from the response.
  3. Execute the tool in your backend, then return the result as a tool message.
  4. Loop until the model answers without requesting a tool, with a step cap for safety.
  5. Test error paths: invalid arguments, tool timeouts, empty results and repeated calls.
  6. Pin the model in configuration and re-run evals when you change it.
1Define each tool asa JSON Schema withtight property2Send the tool listwith the requestand parse3Execute the tool inyour backend, thenreturn the result4Loop until themodel answerswithout requesting5Test error paths:invalid arguments,tool timeouts,6Pin the model inconfiguration andre-run evals when

Try it yourself

Open the function calling tester →

How function calling works on Plugsky

The flow matches the OpenAI pattern, so existing agent code ports directly:

  1. Send the user message plus a tools array of JSON Schemas.
  2. The model responds with tool_calls naming a function and its arguments instead of a final answer.
  3. Your code executes the function — the model never calls anything itself.
  4. You append the tool result and call the API again; repeat until the model produces a normal completion.

Set tool_choice when you need to force or forbid a tool. JSON mode is available when you need structured output without the tool loop, and streaming carries tool-call deltas for responsive interfaces.

Where models differ

Not every model is equally good at tools, and pretending otherwise causes production surprises:

  • Argument accuracy: smaller models may emit plausible but schema-invalid arguments; validate before executing.
  • Parallel calls: some models request several tools at once, others one at a time — your loop should handle both.
  • Instruction following: reliable tool selection improves with stronger models, which matters as the tool count grows.
  • Latency: multi-step loops multiply response time; cap steps and stream where the UX needs it.

Use cheap models for simple, single-tool tasks and stronger models for planning and multi-tool reasoning. The model catalogue is the reference.

What we do and what we do not do

What we do: expose function calling through the OpenAI-compatible API, support JSON mode and streaming alongside it, and document per-model capabilities. What we do not do: execute your tools, sandbox them, or guarantee identical tool behaviour across models — the executor, validation and safety checks are yours. Treat tool arguments as untrusted input: validate against the schema, authorise every call, and never wire a tool directly to a destructive action without confirmation.

Honest comparison

AspectPlugsky function callingOpenAI function callingPrompting for JSON
API shapeOpenAI-compatibleNativePlain text instructions
Schema enforcementJSON Schema in requestJSON Schema in requestNone
Streaming tool callsSupportedSupportedNot applicable
Model coverageVaries by modelVaries by modelAny model
ExecutorYour codeYour codeYour code
ReliabilityGood with validationGood with validationFragile

Frequently asked questions

Is function calling available on all models?

No — coverage varies by model. Check the capability matrix before designing around a specific model, and keep a default that supports tools.

Do I need a special SDK?

No. Function calling uses the standard tools payload in the OpenAI-compatible API, so existing SDKs and agent frameworks work.

Can I force the model to use a tool?

Yes, tool_choice supports forcing or forbidding tool use, subject to the model's capabilities.

Does streaming work with tool calls?

Yes — tool-call deltas are streamed, which lets you show progress while arguments assemble.

How many tools can I expose?

There is no hard product limit, but reliability drops as the set grows. Group related actions and keep schemas descriptive and narrow.

What if the model returns invalid arguments?

Validate against your schema before execution, return a structured error as the tool result, and let the model retry — or fail the step gracefully.

Can I build agents with this?

Yes. Function calling plus your own tool executor is the standard agent loop, and RAG is available alongside it for knowledge-grounded tools.