Iblai api agent support
Agent skills + a chat MCP server to operate the ibl.ai platform via its REST API. Install: npx skills add iblai/api
npx -y skills add iblai/api --skill iblai-api-agent-supportAssembled from the repository path, not quoted from the project. Check it against their README if it does not work.
One thing to look at
- 15 stars15 stars. Stars are a popularity signal and not a quality one, but at this level it is likely that nobody has read this closely except its author, and you would be relying on your own review.
What its author says it does
Copied from the file, not written here
Manage an ibl.ai agent's human-support tickets via the platform API — list and filter the tickets users raised with an agent (by agent, requester, status, session), read a ticket's conversation thread, reply as the support team, change ticket status, and close or delete tickets. Use when triaging or responding to support requests escalated from agent chats.
SKILL.md
6.8 KB, as published. Nobody here has run it
iblai-api-agent-support
Manage an agent's human-support tickets through the API: list and filter the tickets users raised with an agent, read a ticket's reply thread, respond as the support team, move tickets through their lifecycle, and close or delete them. Use when triaging or responding to support requests escalated from agent chats.
Auth & conventions
- Base URL:
https://api.iblai.app - Header:
Authorization: Api-Token $IBLAI_API_KEYon every request. - Path vars:
{org}=$IBLAI_ORG,{username}=$IBLAI_USERNAME,{mentor}= the agent's unique id (e.g.d17dc729-60fd-4363-81a0-f67d9318b03e). - Prefix: every route below hangs off
https://api.iblai.app/dm/api/ai-mentor/orgs/{org}/users/{username}(written{u}below). The path token is nameduser_idon the wire but takes the username. - Not connected yet? Run
/iblai-api-loginfirst to populateIBLAI_ORG,IBLAI_USERNAME, andIBLAI_API_KEY. - DELETE calls are destructive — confirm with the user first.
Concepts
- Tickets are opened by the agent, not by this API. When a user asks an agent
for human help mid-chat, the agent's human-support tool files a
HumanSupportTicket— there is no POST create endpoint here. The requester fields (username,email,full_name,user) and the sourcesessionare resolved server-side from that chat;subjectanddescriptionare authored by the agent (thedescriptionis often HTML or Markdown, not plain text). - Visibility: org admins see every ticket in the org; other users see only the tickets they raised themselves.
- Lifecycle:
statuswalksopen→in_progress→closed. The dedicatedclose/endpoint both setsstatus: closedand stampsresolved_at. - Conversation thread: each ticket has
TicketMessagereplies.senderis the numeric user id of the author — the requester's replies carry theiruserid, support-team replies carry the responder's id, andnullmarks a system-generated message. - Prerequisite: the agent only offers escalation while its human-support tool
is enabled — toggle it with
/iblai-api-agent-tool(pull the exact slug from that skill'savailable-tools/read).
Reads
Tickets
- GET
{u}/support-tickets/?mentor_id={mentor}&status={open|in_progress|closed}&username={requester}&session={session}&page={n}&page_size={n}— paged ticket list. Filters stack:mentor_idscopes to one agent,usernameto one requester,sessionto the chat session that raised the ticket. - GET
{u}/support-tickets/{id}/— one ticket.
Messages
- GET
{u}/support-ticket-messages/?ticket={ticketId}&sender={userId}&page={n}&page_size={n}— paged message list; passticketto load one ticket's conversation thread. - GET
{u}/support-ticket-messages/{id}/— one message.
Writes
Tickets
- PUT
{u}/support-tickets/{id}/— replace a ticket's editable fields:{ "subject": "string (required, ≤255 chars)", "description": "string (required)", "status": "open | in_progress | closed" } - PATCH
{u}/support-tickets/{id}/— edit a subset (e.g.{ "status": "in_progress" }). - POST
{u}/support-tickets/{id}/close/— close a ticket (no body): setsstatus: closedand stampsresolved_at. Prefer this over patchingstatustoclosed. - DELETE
{u}/support-tickets/{id}/— delete a ticket (no body). Destructive — confirm with the user first.
Messages
- POST
{u}/support-ticket-messages/— reply on a ticket:{ "ticket": "integer (required, ticket id)", "message": "string (required)", "sender": "integer | null (optional; defaults to the caller)" } - PUT
{u}/support-ticket-messages/{id}/— replace a message (same fields as create). - PATCH
{u}/support-ticket-messages/{id}/— edit a subset (e.g.{ "message": "string" }). - DELETE
{u}/support-ticket-messages/{id}/— delete a message (no body). Destructive — confirm with the user first.
Example
List one agent's open tickets, newest page first, then reply on ticket 42:
curl -s \
"https://api.iblai.app/dm/api/ai-mentor/orgs/$IBLAI_ORG/users/$IBLAI_USERNAME/support-tickets/?mentor_id=$MENTOR&status=open&page=1&page_size=10" \
-H "Authorization: Api-Token $IBLAI_API_KEY"
curl -X POST \
"https://api.iblai.app/dm/api/ai-mentor/orgs/$IBLAI_ORG/users/$IBLAI_USERNAME/support-ticket-messages/" \
-H "Authorization: Api-Token $IBLAI_API_KEY" \
-H "Content-Type: application/json" \
-d '{"ticket": 42, "message": "We are looking into this now."}'
Notes
- List reads return a DRF page envelope —
{ "count": n, "next": url|null, "previous": url|null, "results": [...] }; iterateresults. DELETEs return204. - There is no ticket-create endpoint — tickets only come from agent chats (see Concepts). To test the flow end-to-end, enable the human-support tool and ask the agent to escalate.
mentor_idfilters by the agent's unique id, not its name;usernamefilters by the requester, independent of the{username}path token (the caller).descriptionis agent-authored and frequently arrives as a full HTML document or Markdown — don't assume plain text when displaying or diffing it.- Closing via
close/is what stampsresolved_at; a plainPATCHtostatus: closedflips the status without the resolution timestamp. - To load a conversation thread, filter messages by
ticketand sort bytimestampascending; matchsenderagainst the ticket'suserto tell requester replies from support replies.
Schema
Ticket object (HumanSupportTicket):
| field | mode | notes |
|---|---|---|
id | ro | integer |
username, email, full_name, user | ro | requester identity; user is the numeric user id |
session | ro | chat session the ticket was raised from |
subject | rw | ≤255 chars |
description | rw | agent-authored body; often HTML/Markdown |
status | rw | open | in_progress | closed |
mentor_id | ro | unique id of the agent the ticket belongs to |
created_at, updated_at | ro | ISO 8601 |
resolved_at | ro | ISO 8601 or null; stamped by close/ |
Message object (TicketMessage): id (ro), ticket (ticket id), sender
(numeric user id or null for system messages), message, timestamp (ro, ISO 8601).