First-party app
Aidbase

Aidbase

Aidbase AI support: manage knowledge sources, chatbots, email inboxes and ticket forms, get chatbot replies, read chats, emails and tickets, and reply to, update or block them.

stable Customer SupportAI & Machine Learning

About

Aidbase ships in the w6w first-party pack. It declares 43 actions, 3 health checks, and the host runs its code in a sandbox that never sees the credential.

App id
io.w6w.aidbase
Version
0.1.0
Author
w6w
Licence
MIT
Categories
Customer Support · AI & Machine Learning

Overview

Aidbase builds AI support agents trained on your own content. This app drives its REST API from a workflow: create and train knowledge sources (websites, YouTube videos, uploaded documents and FAQs), attach them to chatbots, email inboxes and ticket forms, and keep the answers current without opening the dashboard.

On the conversation side it asks a chatbot for an AI reply (continuing a session), lists and reads chats, inbox emails and form tickets over a date range, and acts on them: reply to an email or ticket, change a status or priority, or block an abusive sender.

Authentication is a single Aidbase API key sent as a bearer token. Keys carry scopes chosen when the key is created, so what a workflow may change follows the key’s permissions.

Build with Aidbase

Three routes to the same 43 actions. The Workflow tab is generated from Aidbase's own manifest and carries its real ids, so it is copy-pasteable; the Code and CLI examples are the same call for any action on any app, so every app-specific value in them is a blank you fill in.

Get API Status

account-status

Check that the API key is accepted. Returns the API status; the masked key Aidbase echoes back is dropped.

Block Chat

chatbot-chat-block

Block a chat so its user can no longer interact. Needs an API key with the CHATBOTS_WRITE scope.

Get Chat

chatbot-chat-get

Fetch one chat with its full conversation.

List Chats

chatbot-chat-list

List the conversations a chatbot has had, optionally within a date range. Paginated.

Get Chatbot

chatbot-get

Fetch one chatbot.

Add Knowledge to Chatbot

chatbot-knowledge-add

Attach a trained knowledge item to a chatbot.

List Chatbot Knowledge

chatbot-knowledge-list

List the knowledge items attached to a chatbot. Paginated.

Remove Knowledge from Chatbot

chatbot-knowledge-remove

Detach a knowledge item from a chatbot. The knowledge item itself is not deleted.

List Chatbots

chatbot-list

List the chatbots in the account.

Get Chatbot Reply

chatbot-reply

Send a message to a chatbot and get its AI reply. Pass the `session_id` from a previous reply to continue that conversation.

Block Email

email-block

Block an email so its sender can no longer interact. Needs an API key with the EMAILINBOXES_WRITE scope.

Get Email

email-get

Fetch one email with its conversation.

Get Email Inbox

email-inbox-get

Fetch one email inbox.

Add Knowledge to Email Inbox

email-inbox-knowledge-add

Attach a trained knowledge item to a email inbox.

List Email Inbox Knowledge

email-inbox-knowledge-list

List the knowledge items attached to a email inbox. Paginated.

Remove Knowledge from Email Inbox

email-inbox-knowledge-remove

Detach a knowledge item from a email inbox. The knowledge item itself is not deleted.

List Email Inboxs

email-inbox-list

List the email inboxs in the account.

List Emails

email-list

List the emails in an inbox, optionally filtered by status and date range. Paginated.

Reply to Email

email-reply

Send a reply to an email on behalf of the inbox owner. Needs the EMAILS_WRITE scope.

Update Email

email-update

Change an email's status and/or priority. At least one is required, and Aidbase rejects any other field. Needs the EMAILS_WRITE scope.

Delete Knowledge

knowledge-delete

Delete a knowledge item. Chatbots, inboxes and forms that used it lose it.

Create Document Upload

knowledge-document-create

Start a document knowledge item. Returns a signed `upload_url`: upload the file there, then run Finalize Document.

Finalize Document

knowledge-document-finalize

Complete a document knowledge item after its file has been uploaded to the `upload_url`.

Create FAQ

knowledge-faq-create

Create an FAQ knowledge item to hold question/answer items.

Create FAQ Item

knowledge-faq-item-create

Add a question and answer to an FAQ knowledge item. Categories that do not exist are created. Run Train Knowledge to index the change.

Delete FAQ Item

knowledge-faq-item-delete

Delete one question/answer item from an FAQ knowledge item.

List FAQ Items

knowledge-faq-item-list

List the question/answer items of an FAQ knowledge item. Only applies to items of type faq.

Get Knowledge

knowledge-get

Fetch one knowledge item, including its training status.

List Knowledge

knowledge-list

List the knowledge items (websites, videos, documents, FAQs) in the account. Paginated.

List Website Sub-Pages

knowledge-sub-page-list

List the sub-pages crawled for a website knowledge item. Only applies to items of type website.

Train Knowledge

knowledge-train

Start a training run for a knowledge item. It finishes later: poll Get Knowledge and watch `is_training` and `trained_at`.

Add Video Knowledge

knowledge-video-create

Create a video knowledge item from a YouTube link.

Add Website Knowledge

knowledge-website-create

Create a website knowledge item. Run Train Knowledge afterwards to crawl and index it.

Block Ticket

ticket-block

Block a ticket so its submitter can no longer interact. Needs an API key with the TICKETFORMS_WRITE scope.

Get Ticket Form

ticket-form-get

Fetch one ticket form.

Add Knowledge to Ticket Form

ticket-form-knowledge-add

Attach a trained knowledge item to a ticket form.

List Ticket Form Knowledge

ticket-form-knowledge-list

List the knowledge items attached to a ticket form. Paginated.

Remove Knowledge from Ticket Form

ticket-form-knowledge-remove

Detach a knowledge item from a ticket form. The knowledge item itself is not deleted.

List Ticket Forms

ticket-form-list

List the ticket forms in the account.

Get Ticket

ticket-get

Fetch one ticket with its conversation.

List Tickets

ticket-list

List the tickets submitted to a form, optionally filtered by status and date range. Paginated.

Reply to Ticket

ticket-reply

Send a reply to a ticket on behalf of the form owner. Needs the TICKETS_WRITE scope.

Update Ticket

ticket-update

Change a ticket's status and/or priority. At least one is required, and Aidbase rejects any other field. Needs the TICKETS_WRITE scope.

A workflow step names the app and the action, and the editor fills in the connection when you pick one. This is the Step shape from the workflow spec, carrying Aidbase's real ids.

{
  "manifestVersion": "2",
  "name": "aidbase-example",
  "steps": [
    {
      "id": "chatbot-chat-block",
      "uses": {
        "app": "io.w6w.aidbase",
        "action": "chatbot-chat-block",
        "connection": "conn_YOUR_CONNECTION_ID"
      },
      "with": {
        "chatbotId": "<chatbotId>",
        "chatId": "<chatId>"
      }
    }
  ]
}

Here are some of the things you can do

  • Block Chat

    perform
    chatbot-chat-block
  • Get API Status

    read
    account-status
  • Get Chat

    read
    chatbot-chat-get
  • List Chats

    read
    chatbot-chat-list
  • Get Chatbot

    read
    chatbot-get

+38 more actions available

Every app-specific value here is a blank you have to fill in. An app action is reached through the connection that authenticates it, so the address is a connection id, not the app id — and connections belong to your account, so a public page cannot know yours. Create one for Aidbase, then fill in the three blanks: conn_YOUR_CONNECTION_ID, the action key, and the parameters that action declares. The call itself is real — the shape is transcribed from the studio's own snippet builder, which prints the same kind of blanks — but nothing in it is specific to Aidbase. The Workflow tab is where this app's real ids are.

Install
npm install @w6w/sdk
yarn add @w6w/sdk
pnpm add @w6w/sdk
deno add npm:@w6w/sdk
Code
import { W6wClient, isActionRun } from "@w6w/sdk";

// Reads W6W_BASE_URL and W6W_TOKEN from the environment when omitted.
const client = new W6wClient();

const envelope = await client.run({
  urn: "conn_YOUR_CONNECTION_ID",
  action: "chatbot-chat-block",
  payload: {
    chatbotId: "<value>",
    chatId: "<value>",
  },
});

if (isActionRun(envelope)) console.log(envelope.value);
Install the CLI
npm install -g @w6w/cli
CLI
w6w run conn_YOUR_CONNECTION_ID --action chatbot-chat-block --payload '{"chatbotId":"<value>","chatId":"<value>"}'

Give an AI agent Aidbase — without giving it Aidbase's credentials. One MCP endpoint exposes every app, function and workflow the caller is entitled to, as tools it can discover and run. Access is granted per team while we onboard.

One tool call
{
  "name": "w6w_invoke",
  "arguments": {
    "ref": "app:io.w6w.aidbase#chatbot-chat-block",
    "input": {
      "chatbotId": "<chatbotId>",
      "chatId": "<chatId>"
    }
  }
}

Every tool names its target with a single ref. The app: form above doesn't name a connection at all — the host resolves which of the caller's Aidbase connections to sign with, and refuses rather than guesses when the answer is ambiguous.

What the agent gets

Credentials it can't read

The token is attached host-side, at the moment of the call. It is never a tool argument, never in the model's context, and never in a transcript — so a prompt injection has nothing to exfiltrate.

A tool surface scoped to the caller

Tools are derived per end user from what that person has actually connected and is entitled to — not one shared bot identity carrying the union of everyone's access.

A durable workflow in one call

Multi-step work runs on the workflow engine and returns a run handle the agent can poll — retries, branching and state survive the conversation that started them.

Health-aware discovery

Aidbase's declared health checks are on the surface too, so an agent can tell "the vendor is down" from "your credential expired" before it burns a retry on either.

The MCP surface is part of the hosted platform. Aidbase itself is MIT, and the runtime that executes it is source-available (FSL).

Request MCP access

Health checks

Aidbase declares its own checks, so its health is a property of the app rather than something the host guesses at.

service

Aidbase platform status

dependency

API reachable

Unauthenticated GET https://api.aidbase.ai/v1/status. A 401 carrying Aidbase's JSON `{"success": false, "message": …}` passes — it proves the API and its auth layer are answering. Key validity is the derived `auth:*` check's job.

quota

Quota headroom