Apps installed on a Wix site can extend what an AI agent can do on that site in two ways:
Both are declared by each app and differ from site to site, so always discover them for the site at hand. Never assume which apps, skills or tools exist.
slug, displayName, description, guidelines, toolMethodNames (tools of the same app only), tags and examples. A site's skills come only from its installed apps' extensions; the agent can't create or change them.All four calls act on the site in the call's context and take no site ID in the request body. When calling with an API key, set the site with the wix-site-id header.
The www.wixapis.com/_api/... URLs below are these APIs' public endpoints; the _api/ segment is part of the path. Don't call them on manage.wix.com, which accepts only a dashboard session.
Make both calls. They are independent, so run them in parallel.
List App Skills: GET https://www.wixapis.com/_api/app-skills/v1/app-skills
guidelines). Read them with Get App Skill in Step 3.displayName is omitted when the app did not set one; show slug instead.description, tags and examples.inputModes and outputModes list the media types the skill accepts and produces (for example text/plain, application/json). Empty means no restriction.List Tools Providers: POST https://www.wixapis.com/_api/tools-host/v1/list-tools-providers
appId of a provider is the providerAppId for Invoke Tool, and it is the same value as appId on that app's skills.settings.enabled is false, and a tool whose settings.enabled is false: the site owner turned them off.displayName is omitted when the app did not set one; show methodName instead.If both lists are empty, tell the user that none of the apps installed on this site provide skills or tools, and stop.
Choose only after you have both lists, and never in the same script or batch that discovers them: an app's tools are known only from their description, so a tool picked by its name alone is a guess.
Decide in this order:
When the user asks what their apps can do, present the skills and tools grouped by app, by display name and description. Do not show IDs or method names to the user.
Get App Skill: GET https://www.wixapis.com/_api/app-skills/v1/app-skills/{appSkillId}, with the id from List App Skills (<APP_SKILL_ID> below).
Follow guidelines (Markdown) to carry out the request, with these limits:
toolMethodNames, and only of this skill's app (appId). Take each tool's requestSchema from List Tools Providers.toolMethodNames is instructions only: answer from the guidelines, with no tool calls.A 404 with APP_SKILL_NOT_FOUND means the skill is no longer available on the site (the app was removed or the skill turned off). Tell the user and list the skills again.
Invoke Tool: POST https://www.wixapis.com/_api/tools-host/v1/invoke-tool
description matches the action the user asked for, say so instead of running the closest one.methodName is the raw methodName, never the display name.payload strictly from the tool's requestSchema. Wix does not validate the payload before passing it to the app, so ask the user for every required field you don't have instead of guessing.response is whatever the app returns; its shape follows the tool's responseSchema when the app declares one.Errors from the app come back as the app's error. For example, a 404 with UNKNOWN_TOOL means the app does not implement that method, and a 400 means the app rejected the payload. Report the error to the user; don't retry with invented values.
The caller is not allowed to read the site's app skills or run its app tools. Check that the call is authenticated for this site and that the caller's role on the site includes managing its apps.
No installed app on the site declares skills or tools. This is normal for most sites.
Last updated: 4 October 2026