concinno-skills-support
Customer-support agent skills for Concinno.
Targets the Databricks 2026 #1 enterprise landing use case
(customer service: finance 23% / retail 27%). Native Python REST wrappers,
Apache-2.0 / MIT SDKs only — we deliberately avoid zenpy (GPL-3.0)
to keep the Concinno ecosystem copy-left-free.
Status
MVP (0.1.0) — three one-shot tools:
| Tool class | Platform | Underlying transport | Licence |
|---|---|---|---|
ZendeskTicket |
Zendesk | httpx (REST v2) |
Apache-2.0 |
ZendeskSearch |
Zendesk | httpx (REST v2) |
Apache-2.0 |
IntercomMessage |
Intercom | httpx (REST) |
Apache-2.0 |
Both platforms are reached via Concinno's existing httpx main dependency;
this package therefore adds zero additional runtime dependencies
beyond Concinno itself.
Install
pip install concinno-skills-support
Credentials
Each platform's credentials live under well-known keys in the Concinno
CredentialStore, which reads (in order):
- Process runtime overrides via
CredentialStore.set(...). - Env var
CONCINNO_CRED_<UPPER_KEY>. ~/.concinno/credentials.json.
Zendesk
Two supported auth shapes (OAuth is tried first):
| Key | Env var |
|---|---|
zendesk_subdomain |
CONCINNO_CRED_ZENDESK_SUBDOMAIN |
zendesk_email |
CONCINNO_CRED_ZENDESK_EMAIL |
zendesk_api_token |
CONCINNO_CRED_ZENDESK_API_TOKEN |
zendesk_oauth_token |
CONCINNO_CRED_ZENDESK_OAUTH_TOKEN |
API-token auth uses the official {email}/token:{api_token} Basic-auth
format documented by Zendesk.
Intercom
| Key | Env var |
|---|---|
intercom_access_token |
CONCINNO_CRED_INTERCOM_ACCESS_TOKEN |
Example ~/.concinno/credentials.json:
{
"zendesk_subdomain": "acme",
"zendesk_email": "agent@acme.com",
"zendesk_api_token": "…",
"intercom_access_token": "dG9rZW4="
}
If a token is missing the tool returns
{"error": "no <service> credentials — set via CredentialStore / env"}
rather than crashing.
Usage via Concinno ToolRegistry
When the consumer sets CONCINNO_LOAD_PLUGINS=1, the default registry
auto-mounts every support tool:
import os
os.environ["CONCINNO_LOAD_PLUGINS"] = "1"
from concinno.tools.registry import get_default_registry
reg = get_default_registry()
assert {"ZendeskTicket", "ZendeskSearch", "IntercomMessage"} <= set(
reg.list_deferred()
)
ticket = reg.get("ZendeskTicket")
ticket.call(action="list", status="open", limit=20)
Direct Python usage
from concinno_skills_support import (
ZendeskTicket,
ZendeskSearch,
IntercomMessage,
)
ZendeskTicket().call(action="list", status="open", limit=50)
ZendeskTicket().call(
action="create",
subject="Login broken",
comment="Customer reports 401 on sign-in",
requester_email="user@example.com",
priority="urgent",
)
ZendeskSearch().call(
action="search", query="status:open priority:urgent", limit=25
)
IntercomMessage().call(
action="send",
conversation_id="conv-42",
body="We're on it — thanks for flagging.",
admin_id="admin-7",
)
All tools return {"ok": True, ...} or a structured payload on success,
or {"error": "..."} on failure — same shape as the other Concinno
built-in tools. No exceptions escape the call() surface.
Concurrency
All three tools set is_concurrency_safe = False. Both Zendesk and
Intercom enforce tenant-scoped rate limits, and ticket/conversation
mutation is order-sensitive. The Concinno scheduler will honour this
automatically.
Safety caps
- Zendesk search
query≤ 500 chars. - Zendesk ticket
commentbody ≤ 50 000 chars. - Intercom
body≤ 10 000 chars.
License
Apache-2.0. See LICENSE in the Concinno monorepo.
Metadata
Release files for concinno-skills-support 0.1.0
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| concinno_skills_support-0.1.0.tar.gz | 41.6 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| concinno_skills_support-0.1.0-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 57.6 kB
Release files / concinno_skills_support-0.1.0.tar.gz
| Download URL | concinno_skills_support-0.1.0.tar.gz |
|---|---|
| Size | 41.6 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
4809f27197d63709d4025d6697e3553668cfa1085be7989acfc9ef75a11646f8
|
|
BLAKE2b-256 checksum How to use checksums |
4fb4722a7fa7e5a07ce725a4ba50c398ebdb1d8c06aeda4d214d0d81ad071657
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.2.0 CPython/3.11.9
|
Release files / concinno_skills_support-0.1.0-py3-none-any.whl
| Download URL | concinno_skills_support-0.1.0-py3-none-any.whl |
|---|---|
| Size | 16.1 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
d6658805e170cbc4cd18bcebb0d7639db08cc476a20b6ae7825288f68185eae3
|
|
BLAKE2b-256 checksum How to use checksums |
af5b43304469f8abf6354233079a89aaa7f5b5e82186de2beb1764dcb50c4dda
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.2.0 CPython/3.11.9
|