Jingle Developers

Agent tools

Declare tools agents can call with input schemas, access levels, approval metadata, and user-facing displays.

Agent tools let agents call extension capabilities. A good tool does not expose an internal function directly to AI; it provides an access level, input schema, approval semantics, and user-readable presentation.

Manifest capability

Extensions declare AI capability in the manifest:

aiCapability: {
  id: "notion",
  title: "Notion",
  description: "Notion workspace pages, data sources, tasks, and docs.",
  requiredPreferenceNames: ["accessToken"],
  publicPreferenceNames: ["apiBaseUrl"],
  toolNames: ["searchPages", "getPage", "addToPage"],
  guide: "Use this capability for Notion work only after the user connects Notion."
}
CapabilityStatus
Tool-name registrationPreview
Capability guide injected into agent contextPreview
Connection status affects tool availabilityPreview
Tool display title / descriptionPreview
Fine-grained per-tool permission UIPlanned

Tool definition

Tools are declared in the main definition:

FieldMeaning
nameTool id
descriptionHuman and agent-facing description
inputSchemaTool input schema
accessread, write, or external
approvalHuman confirmation for writes, external actions, or high-risk work
handlerThe execution function

The handler receives host-resolved context, including connection state, public config, and allowed secrets. Tools should not guess tokens or read renderer state.

Access levels

accessMeaningExample
readRead remote or local dataSearch Notion pages, list GitHub issues
writeModify an external systemCreate a GitHub issue, append content to Notion
externalOpen external apps, websites, or workflowsOpen Notion, trigger an external workflow

Approval

Write operations and external side effects should be understandable before they run. A tool can provide a confirmation title, risk label, facts, and a confirm action.

approval: {
  required: true,
  buildConfirmation(input) {
    return {
      title: "Create GitHub issue",
      facts: [
        { label: "Repository", value: input.repository },
        { label: "Title", value: input.title }
      ]
    }
  }
}

Provider examples

ProviderRead toolsWrite tools
GitHubIssues, PRs, repositories, notifications, workflow runscreateIssue
NotionPages, blocks, data sources, database queriesaddToPage, createPage, createDatabasePage

When a connection is missing, the agent should ask the user to connect the extension in Settings before it reads or writes provider data.