@kentcdodds/groupme
GroupMe REST API helpers for listing groups, reading messages, ranking activity, and preparing relevance-filtered digests for Kody agents.
AGENTS.md
115 lines · 3.4 KB · Markdown@kentcdodds/groupme — agent notes
Human setup and intent live in README.md. This file is for
agents: imports, smoke / execute snippets, and edge cases. Secrets by name
only — never paste token values. Do not disable live webhooks or jobs.
Secrets / connect
| Name | Kind | Notes |
|---|---|---|
groupmeAccessToken | user secret | Header X-Access-Token |
groupme-client-id | user value | OAuth application client id |
Integration id: groupme. Hosts: api.groupme.com, oauth.groupme.com,
image.groupme.com. Placeholder:
{{secret:groupmeAccessToken|scope=user}}.
Connect: /connect/oauth?provider=groupme or kody:@kentcdodds/groupme/guide.
Import paths
| Export | Import |
|---|---|
| overview / discovery | kody:@kentcdodds/groupme |
| types | kody:@kentcdodds/groupme/types |
| request | kody:@kentcdodds/groupme/request |
| smoke-test | kody:@kentcdodds/groupme/smoke-test |
| guide | kody:@kentcdodds/groupme/guide |
| get-me | kody:@kentcdodds/groupme/get-me |
| list-groups | kody:@kentcdodds/groupme/list-groups |
| list-messages | kody:@kentcdodds/groupme/list-messages |
| get-messages-in-range | kody:@kentcdodds/groupme/get-messages-in-range |
| list-most-active-groups | kody:@kentcdodds/groupme/list-most-active-groups |
| filter-relevant-messages | kody:@kentcdodds/groupme/filter-relevant-messages |
| prepare-digest | kody:@kentcdodds/groupme/prepare-digest |
Prefer focused paths. Prefer static kody:@kentcdodds/groupme/... imports from
execute. Do not lead with packages.invoke.
Smoke test (read-only)
import smokeTest from 'kody:@kentcdodds/groupme/smoke-test'
export default async function main() {
return await smokeTest()
// => { ok: true, user: { id, name }, topGroups: [...] }
}Auth-only:
import getMe from 'kody:@kentcdodds/groupme/get-me'
export default async function main() {
return await getMe()
}Common snippets
Most active groups:
import listMostActiveGroups from 'kody:@kentcdodds/groupme/list-most-active-groups'
export default async function main() {
return await listMostActiveGroups({ limit: 5 })
}Prepare a digest window:
import prepareDigest from 'kody:@kentcdodds/groupme/prepare-digest'
export default async function main() {
return await prepareDigest({
groupName: 'Finding Neverland',
start: '2026-07-07',
end: '2026-07-09',
timeZone: 'America/Denver',
relevance: {
keywords: ['rehearsal', 'call time'],
excludeSystem: true,
minTextLength: 4,
},
})
}Low-level escape hatch:
import request from 'kody:@kentcdodds/groupme/request'
export default async function main() {
return await request({ path: '/users/me', throwOnError: true })
}Edge cases
- Helpers are read-only — they do not post messages.
get-messages-in-rangeandprepare-digeststop atmaxPages(default 50) to avoid runaway fetches.findGroupByName(via prepare-digest / domain): exact case-insensitive name first, then substring match.- Default timezone for date windows:
America/Denver. requestonly acceptsapi.groupme.com/v3URLs or relative API paths. Failures throwGroupMeRequestErrorwith the response attached whenthrowOnErroris notfalse.- Cross-package: if another package imports this one,
groupmeAccessTokenmust also be approved for the calling package.