Google ecosystem agent skills (Calendar/Gmail/Drive/Sheets/Maps) for Concinno — native Python API first, MCP fallback optional
Project description
concinno-skills-google
Google ecosystem agent skills for Concinno. Native Python API first, MCP fallback optional.
Status
MVP (0.1.0) — GoogleCalendar only. Drive / Gmail / YouTube Data will
follow in subsequent minor releases under the same entry-point group so
no Concinno upgrade is required when new tools land.
Install
pip install concinno-skills-google
google-api-python-client and google-auth are hard dependencies
(the tool is useless without them) and will be pulled in automatically.
OAuth setup
This package does not run an interactive OAuth flow — tokens are a one-shot user responsibility. Use any of the standard Google quickstart flows to produce an authorized-user token JSON, then make it visible to Concinno via either of:
Option A — drop the file (simplest):
mkdir -p ~/.concinno
cp path/to/your/token.json ~/.concinno/google_token.json
Option B — Concinno CredentialStore (preferred when you already
use it for other secrets):
from concinno.core.credentials import get_default_store
store = get_default_store()
store.set("google_oauth_token", open("token.json").read())
Or persist it via the config file:
// ~/.concinno/credentials.json
{
"google_oauth_token": "{...authorized-user token JSON as a string...}"
}
Expired access tokens are refreshed automatically; the refreshed JSON is written back to whichever source provided it.
Usage via Concinno ToolRegistry
When the consumer sets CONCINNO_LOAD_PLUGINS=1, the default registry
auto-mounts GoogleCalendar:
import os
os.environ["CONCINNO_LOAD_PLUGINS"] = "1"
from concinno.tools.registry import get_default_registry
reg = get_default_registry()
assert "GoogleCalendar" in reg.list_deferred()
tool = reg.get("GoogleCalendar")
events = tool.call(
action="list",
time_min="2026-04-22T00:00:00Z",
time_max="2026-04-23T00:00:00Z",
max_results=50,
)
Direct Python usage
No registry round-trip required; instantiate directly:
from concinno_skills_google import GoogleCalendar
cal = GoogleCalendar()
# List
events = cal.call(
action="list",
calendar_id="primary",
time_min="2026-04-22T00:00:00Z",
)
# Create
created = cal.call(
action="create",
event={
"summary": "Deep work block",
"start": {"dateTime": "2026-04-22T14:00:00+08:00"},
"end": {"dateTime": "2026-04-22T16:00:00+08:00"},
},
)
# Delete
cal.call(action="delete", event_id=created["id"])
All methods return either a plain list[dict] (for list) or a small
status dict. On failure they return {"error": "..."} rather than
raising — same shape as the other Concinno built-in tools.
License
Apache-2.0. See LICENSE in the Concinno monorepo.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file concinno_skills_google-0.2.0.tar.gz.
File metadata
- Download URL: concinno_skills_google-0.2.0.tar.gz
- Upload date:
- Size: 49.1 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.11.9
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
6c5144174b3edf0bee45db6cbec35ecb36d172b9e47c5d5689143e37fa042cc7
|
|
| MD5 |
752d22254e69d36e4b02fc818f01e541
|
|
| BLAKE2b-256 |
0ca4bad97c0d6d5270e6c2b61e5f4ac1369c0f718aa18c4ec50a1aae10f7f1d9
|
File details
Details for the file concinno_skills_google-0.2.0-py3-none-any.whl.
File metadata
- Download URL: concinno_skills_google-0.2.0-py3-none-any.whl
- Upload date:
- Size: 21.1 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.11.9
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
49b9258772ab13025a743e3b3632698d2400f497094dc89c2dd0fbf902191363
|
|
| MD5 |
4fb6913f4918dfdf64ef522586cb02bc
|
|
| BLAKE2b-256 |
687a370f2f3306eb711686e35d4c8b9ebcce3db4c285c54803312be24d7317eb
|