Skip to main content

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


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

concinno_skills_google-0.2.0.tar.gz (49.1 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

concinno_skills_google-0.2.0-py3-none-any.whl (21.1 kB view details)

Uploaded Python 3

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

Hashes for concinno_skills_google-0.2.0.tar.gz
Algorithm Hash digest
SHA256 6c5144174b3edf0bee45db6cbec35ecb36d172b9e47c5d5689143e37fa042cc7
MD5 752d22254e69d36e4b02fc818f01e541
BLAKE2b-256 0ca4bad97c0d6d5270e6c2b61e5f4ac1369c0f718aa18c4ec50a1aae10f7f1d9

See more details on using hashes here.

File details

Details for the file concinno_skills_google-0.2.0-py3-none-any.whl.

File metadata

File hashes

Hashes for concinno_skills_google-0.2.0-py3-none-any.whl
Algorithm Hash digest
SHA256 49b9258772ab13025a743e3b3632698d2400f497094dc89c2dd0fbf902191363
MD5 4fb6913f4918dfdf64ef522586cb02bc
BLAKE2b-256 687a370f2f3306eb711686e35d4c8b9ebcce3db4c285c54803312be24d7317eb

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page