Now liveThe Skillselion MCP - thousands of ranked skills, loaded into your agent mid-task. No install.Get it →
docyrus avatar

Docyrus App Ai Tools

  • 27 installs
  • 13 repo stars
  • Updated July 15, 2026
  • docyrus/agent-skills

Create and manage app-scoped AI tools for the Docyrus base assistant Docy using the docyrus apps ai-tools CLI, across four executable tool types.

About

A skill for authoring app-owned AI tools (data_source_query, custom_query, secure_exec, client_side) that become available to Docyrus's base assistant when the app installs. A developer uses it to give Docy new tools and set app-level agent context.

  • Four tool types spanning fixed data-source reads, read-only SQL, sandboxed JS, and client-side actions
  • App-scoped tools auto-attach to the base assistant with no per-agent wiring

Docyrus App Ai Tools by the numbers

  • 27 all-time installs (skills.sh)
  • Ranked #9,601 of 16,546 AI & Agent Building skills by installs in the Skillselion catalog
  • Data as of Jul 29, 2026 (Skillselion catalog sync)
npx skills add https://github.com/docyrus/agent-skills --skill docyrus-app-ai-tools

Add your badge

Show developers this skill is listed on Skillselion. Paste this into your README.

Listed on Skillselion
Installs27
repo stars13
Last updatedJuly 15, 2026
Repositorydocyrus/agent-skills

What it does

Create and manage app-scoped AI tools for the Docyrus base assistant Docy using the docyrus apps ai-tools CLI, across four executable tool types.

Files

SKILL.mdMarkdownGitHub ↗

Docyrus App-Scoped AI Tools

Build custom tools that the Docyrus system base assistant ("Docy") can call during a conversation. Tools are created per app (tenant_ai_tool, ownership=CUSTOM, tenant_app_id=<app>) with the docyrus apps ai-tools CLI. Once the app is installed in the tenant, its tools are automatically available to the base assistant — there is no per-agent wiring.

End-to-end workflow

1. Create the tooldocyrus apps ai-tools create with the right --type and that type's config. 2. Guide the base assistant (optional but recommended) — docyrus apps set-agent-context to tell "Docy" when to use which tool.

App-scoped tools are owned by the app and exclusive to the system base assistant ("Docy"). When the app is installed in the tenant, its tools are attached to Docy automatically — you do not (and cannot) wire them to a specific agent, and there is no agent tools attach step. If the app is not installed in the tenant, its tools are not loaded.

App-scoped tools cannot be attached to custom AI agents. Giving a custom agent its own tools is a different, agent-owned flow (docyrus agent tools …) outside this skill's scope.

All commands need an authenticated CLI session (docyrus auth who to verify). The app is selected with exactly one of --appId or --appSlug on every command.

The four tool types — pick one

--typeUse whenExecutesAuthor config
data_source_queryRead/list records from one data source; the LLM only supplies filter valuesServer, RLS-enforceddata source id + fixed columns/limit/formulas + a filter template with {{param}} bindings → data-source-query-tool.md
custom_queryRead across joins/aggregations needing hand-written read-only SELECT SQLServer, read-only txn, RLSa Handlebars-templated SQL string → custom-query-tool.md
secure_execMulti-step logic, calling the Docyrus REST API (incl. writes), transforming/compacting resultsServer sandbox (10s, no FS/env, Docyrus-API-only network)a JavaScript body → secure-exec-tool.md
client_sideThe action must run in the user's browser/app (UI navigation, local selection, host APIs)Client/frontendinput/output schema only; the host app implements the handler → client-side-tool.md

Read the matching reference file before authoring that type — each documents the exact config fields, templating/binding rules, runtime behavior, and worked examples.

docyrus apps ai-tools command surface

Routes to /v1/dev/apps/:appId/ai-tools. The CLI resolves --appSlug to an app id.

docyrus apps ai-tools list   --appSlug <slug>
docyrus apps ai-tools get    --appSlug <slug> --toolId <id>
docyrus apps ai-tools create --appSlug <slug> --type <type> [config flags | --from-file payload.json]
docyrus apps ai-tools update --appSlug <slug> --toolId <id> [flags | --from-file payload.json]
docyrus apps ai-tools delete --appSlug <slug> --toolId <id>

Convenience flags (camelCase flag → snake_case payload key)

Common to every type:

FlagKeyNotes
--namenameRequired on create. Display name.
--keykeyRequired on create. The function name the LLM sees. snake_case, stable, and globally unique (a DB UNIQUE constraint across all tenants) — namespace it (e.g. crm_get_customer_balance) to avoid collisions.
--descriptiondescriptionDrives LLM tool selection — always write a clear, specific one.
--typetypeMust be set to data_source_query \
--inputJsonSchemainput_json_schemaRequired at runtime for all four types (the LLM's argument schema). A no-argument tool still needs {"type":"object","properties":{}}.
--outputJsonSchemaoutput_json_schemaOptional result schema (mainly client_side).
--iconiconOptional.
--environmentsenvironmentsComma list of web,desktop,ios. Restricts where the tool is offered.
--needsApprovalneeds_approvalRequire user approval before the call runs. Use for tools that mutate data.
--dynamicApprovalFormuladynamic_approval_formulaJSONata that decides approval per-call.

Type-specific flags (--secureExecCode, --customQuerySqlQuery, --customQueryFilters, --dataSourceQueryDataSourceId, --dataSourceQueryColumns, --dataSourceQueryFilters, --dataSourceQueryFilterKeyword, --dataSourceQueryFormulas, --dataSourceQueryChildQueries, --dataSourceQueryLimit, --clientSideExecution) are documented in each type's reference file.

--from-file <path> / --data '<json>' send a raw JSON payload (snake_case keys); convenience flags are merged over it. Prefer `--from-file` for anything with JSON schemas, SQL, or code — it sidesteps shell quoting. JSON-typed flags (--inputJsonSchema, --dataSourceQueryFilters, …) expect a JSON string when passed inline.

The endpoint forces ownership=CUSTOM and tenant_app_id. Platform-managed fields (group, avatar, restricted, cost, development_status, core_action_id, core_data_provider_id, owner_product_id) are not settable here.

Set the app's agent context

agent_context is app-level guidance text injected into the base assistant's prompt. Use it to orchestrate: name each tool's key and say when to reach for it, what each returns, and any ordering ("look up the customer with get_customer before calling get_customer_balance").

docyrus apps set-agent-context --appSlug <slug> --from-file agent-context.md   # recommended for prose
docyrus apps set-agent-context --appSlug <slug> --value "Use get_customer_balance when the user asks about balances or overdue amounts."
docyrus apps set-agent-context --appSlug <slug> --clear                        # remove it

Provide exactly one of --value, --from-file, or --clear. (This writes agent_context via PATCH /v1/dev/apps/:appId; docyrus apps update --agentContext does the same.)

Authoring checklist

  • --type set, and the matching config provided (see the type's reference file).
  • input_json_schema present (even if empty) and describing only what the LLM should supply.
  • description is specific enough for the model to choose the tool correctly; key is snake_case and stable.
  • The app is installed in the tenant — that's what surfaces its tools to the base assistant (Docy). App-scoped tools auto-attach to Docy only; they're never wired to custom agents.
  • Mutating tools (secure_exec writes, etc.) consider --needsApproval true.
  • Agent context mentions the new tool's key and trigger conditions.
  • Verify with docyrus apps ai-tools get --toolId <id>, then exercise it by chatting with the base assistant (docyrus docy "...").

Related skills

This week in AI coding

Five minutes, every Monday - the tools, releases and tactics for developers.

unsubscribe anytime.