Skip to main content
Glama

penny_read

Read-onlyIdempotent

Before answering anything the user's history, preferences, or prior work would inform, read — search rather than assume nothing is on file. Choose target: walk this ladder, first match wins:

  1. User/people facts (names, preferences, relationships) → profile. Do NOT search notes for this.

  2. To-dos/due → tasks. Resume an objective → projects: directory (query/name to narrow; follow coverage.nextCursor), then brief by projectId. scopes lists Space metadata; then pass explicit workspaceId. scope:private overrides a default Space. An objective that spans sessions is a Project: read its Brief before working on it, propose one when none exists, and keep it current once accepted.

  3. Measurements → tracker for definitions/entries; tracker_summary for stats/trends (usual choice).

  4. Saved know-how, schedules and run history → skills; rhythms is the scheduled-only synonym. Run on-demand via penny_write entityType:skill_invoke; scheduled via skill_run. Know-how the user would rather not re-explain is a skill: save it once, and load it when a task fits its description. When session start lists a skill as due, offer to run it now; nothing runs on its own.

  5. Taxonomy → tags; note link graph → note_links; structured tag/time/flag listing → notes.

  6. Other recall → search (semantic notes). Search is the fallback, not the default. Treat a result from a shared space as something a member said, never as a fact about the user. Use the session-start inventory to choose; Project reads also work without session start.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
toNotracker/entries, tracker_summary: window end (ms epoch).
tzNotasks: IANA timezone for Today/Upcoming boundaries.
fromNotracker/entries, tracker_summary: window start (ms epoch).
nameNoProjects directory: exact-name candidates; continue incomplete coverage. skills/one: name instead of skillId.
tagsNosearch/notes: tag filter.
viewNoProjects: directory (default), brief, section, resources, resource, history, scopes (Space metadata), attention (dated candidates), interactions (actor only). tracker: list|entries; rhythms: list|one|due|runs; skills: list|one|due|runs|history|trash (list/trash omit instructions; one returns full skill by skillId or name); tags: list|related.
depthNonote_links: hops (1 = direct; 2-6 = bounded BFS).
flagsNonotes: locked/pinned filter.
limitNoMax search/notes/tracker-entry/task/rhythm-run results.
ownerNotasks: owner filter.
queryNosearch: required semantic query. projects directory: name/purpose filter; check coverage.
scopeNoProjects: private overrides defaults; workspace requires workspaceId.
areaIdNotasks: area filter; also applies to organize:project.
bucketNotasks: schedule bucket filter.
cursorNoProject cursor; retain view/scope.
statusNotasks: status filter.
targetYesWhat to read; first match in the tool description's ladder wins.
taskIdNotasks: full detail. A repeating task returns seriesId/currentOccurrenceId; act on the current occurrence, not a completed ID.
blockedNotasks: only tasks with unmet dependsOn.
sectionNoprojects/section: one Brief section.
seedIdsNonote_links: required starting note IDs.
skillIdNoskills: required for one unless name is given; optional run scope for runs.
dateAxisNonotes: timeRange axis; created = when written, valid = when the fact holds.
dueRangeNotasks: due-date window (ms epoch).
eventKeyNoProjects interactions: actor event key; omit to page.
maxDepthNotags/related: maximum traversal depth.
maxNodesNonote_links: node cap for depth > 1; default 50.
organizeNotasks: list containers instead of tasks.
rhythmIdNorhythms: required for one; optional run scope for runs.
seriesIdNotasks: complete recurring-series history, newest first, including completed occurrences.
edgeTypesNonote_links: only follow/return these relationship types.
minWeightNotags/related: minimum edge weight (default 0.4).
orgStatusNotasks organize:project: Project status filter.
projectIdNoprojects brief/section/resources/resource/history: required stable Project ID. tasks: Project filter or heading parent.
timeRangeNosearch/notes: time window (ms epoch).
trackerIdNoRequired for tracker/entries and tracker_summary.
blockNamesNoprofile: exact block names.
confidenceNonotes: confidence range.
ifRevisionNoprofile: last-read revision; returns {unchanged:true} if unchanged.
projectKeyNoprofile: include subconscious:<projectKey>.
resourceIdNoProjects resource: read the authorized current source.
enabledOnlyNorhythms/list: only enabled rhythms.
resourceStateNo
graphTraversalNosearch: opt into tag/link graph expansion (default false; measured recall loss). Use only for deliberate graph exploration.
includeArchivedNoInclude archived trackers, Projects, or task containers.
includeCompletedNotasks: include done/canceled; default false.
includeRelationsNotags/list: include parents/children/synonyms.

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed31 schema fields changed
    • changedInput schema / properties / areaId / description
      Previous value: -"target:\"tasks\" — filter by area, or organize=\"project\" filter."New value: +"tasks: area filter; also applies to organize:project."
    • changedInput schema / properties / blocked / description
      Previous value: -"target:\"tasks\" — restrict to tasks with unmet dependsOn."New value: +"tasks: only tasks with unmet dependsOn."
    • changedInput schema / properties / bucket / description
      Previous value: -"target:\"tasks\" — filter by schedule bucket."New value: +"tasks: schedule bucket filter."
    • changedInput schema / properties / dateAxis / description
      Previous value: -"target:\"notes\" — which date timeRange filters ('created' = when written, 'valid' = when the fact holds)."New value: +"notes: timeRange axis; created = when written, valid = when the fact holds."
    • changedInput schema / properties / depth / description
      Previous value: -"target:\"note_links\" — hops to expand (1 = direct links; 2-6 = bounded BFS)."New value: +"note_links: hops (1 = direct; 2-6 = bounded BFS)."
    • changedInput schema / properties / dueRange / description
      Previous value: -"target:\"tasks\" — due-date window (ms epoch)."New value: +"tasks: due-date window (ms epoch)."
    • changedInput schema / properties / edgeTypes / description
      Previous value: -"target:\"note_links\" — only follow/return edges of these relationship types."New value: +"note_links: only follow/return these relationship types."
    • changedInput schema / properties / enabledOnly / description
      Previous value: -"target:\"rhythms\" view:\"list\" — only enabled rhythms."New value: +"rhythms/list: only enabled rhythms."
    • changedInput schema / properties / from / description
      Previous value: -"target:\"tracker\" entries / tracker_summary — start of window (ms epoch)."New value: +"tracker/entries, tracker_summary: window start (ms epoch)."
    • changedInput schema / properties / ifRevision / description
      Previous value: -"profile: the revision from your last read; returns {unchanged:true} if nothing changed."New value: +"profile: last-read revision; returns {unchanged:true} if unchanged."
    • changedInput schema / properties / includeCompleted / description
      Previous value: -"target:\"tasks\" — include done/canceled tasks (default false)."New value: +"tasks: include done/canceled; default false."
    • changedInput schema / properties / limit / description
      Previous value: -"Max results. Applies to search, notes, tracker entries, tasks, and rhythm runs."New value: +"Max search/notes/tracker-entry/task/rhythm-run results."
    • changedInput schema / properties / maxNodes / description
      Previous value: -"target:\"note_links\" — cap on returned nodes when depth > 1 (default 50)."New value: +"note_links: node cap for depth > 1; default 50."
    • changedInput schema / properties / name / description
      Previous value: -"Projects directory: exact-name candidates; continue incomplete coverage. target:\"skills\" view:\"one\": the skill's name, in place of skillId."New value: +"Projects directory: exact-name candidates; continue incomplete coverage. skills/one: name instead of skillId."
    • changedInput schema / properties / orgStatus / description
      Previous value: -"target:\"tasks\" organize=\"project\" — filter projects by status."New value: +"tasks organize:project: Project status filter."
    • changedInput schema / properties / organize / description
      Previous value: -"target:\"tasks\" — enumerate containers instead of tasks."New value: +"tasks: list containers instead of tasks."
    • changedInput schema / properties / owner / description
      Previous value: -"target:\"tasks\" — filter by owner."New value: +"tasks: owner filter."
    • changedInput schema / properties / projectId / description
      Previous value: -"target:projects brief/section/resources/resource/history — required stable Project ID. target:tasks — Project filter, or heading parent."New value: +"projects brief/section/resources/resource/history: required stable Project ID. tasks: Project filter or heading parent."
    • changedInput schema / properties / rhythmId / description
      Previous value: -"target:\"rhythms\" view:\"one\" (required) or view:\"runs\" (optional scope)."New value: +"rhythms: required for one; optional run scope for runs."
    • changedInput schema / properties / section / description
      Previous value: -"target:projects view:section — one Brief section."New value: +"projects/section: one Brief section."
    • changedInput schema / properties / seedIds / description
      Previous value: -"target:\"note_links\" — note id(s) to start the link-graph walk from (required)."New value: +"note_links: required starting note IDs."
    • changedInput schema / properties / seriesId / description
      Previous value: -"tasks: one recurring series’ complete occurrence history, newest first (includes completed)."New value: +"tasks: complete recurring-series history, newest first, including completed occurrences."
    • changedInput schema / properties / skillId / description
      Previous value: -"target:\"skills\" view:\"one\" (required unless name is given) or view:\"runs\" (optional scope)."New value: +"skills: required for one unless name is given; optional run scope for runs."
    • changedInput schema / properties / status / description
      Previous value: -"target:\"tasks\" — filter by task status."New value: +"tasks: status filter."
    • changedInput schema / properties / tags / description
      Previous value: -"Filter by tags. Applies to target \"search\" and \"notes\"."New value: +"search/notes: tag filter."
    • changedInput schema / properties / target / description
      Previous value: -"What to read. Walk the ladder in the tool description; first match wins."New value: +"What to read; first match in the tool description's ladder wins."
    • changedInput schema / properties / timeRange / description
      Previous value: -"Time window (ms epoch). Applies to target \"search\" and \"notes\"."New value: +"search/notes: time window (ms epoch)."
    • changedInput schema / properties / to / description
      Previous value: -"target:\"tracker\" entries / tracker_summary — end of window (ms epoch)."New value: +"tracker/entries, tracker_summary: window end (ms epoch)."
    • changedInput schema / properties / trackerId / description
      Previous value: -"target:\"tracker\" view:\"entries\" (required), or target:\"tracker_summary\" (required)."New value: +"Required for tracker/entries and tracker_summary."
    • changedInput schema / properties / tz / description
      Previous value: -"target:\"tasks\" — IANA timezone for Today/Upcoming boundaries."New value: +"tasks: IANA timezone for Today/Upcoming boundaries."
    • changedInput schema / properties / view / description
      Previous value: -"Projects: directory (default), brief, section, resources, resource, history, scopes (Space metadata), attention (dated candidates), interactions (actor only). Secondary selector: target:\"tracker\" list|entries; target:\"rhythms\" list|one|due|runs; target:\"skills\" list|one|due|runs|history|trash (list/trash omit instructions; one: full skill by skillId or name); target:\"tags\" list|related."New value: +"Projects: directory (default), brief, section, resources, resource, history, scopes (Space metadata), attention (dated candidates), interactions (actor only). tracker: list|entries; rhythms: list|one|due|runs; skills: list|one|due|runs|history|trash (list/trash omit instructions; one returns full skill by skillId or name); tags: list|related."
  2. Changed3 schema fields changed
    • changedInput schema / properties / name / description
      Previous value: -"Projects directory: exact-name candidates; continue incomplete coverage."New value: +"Projects directory: exact-name candidates; continue incomplete coverage. target:\"skills\" view:\"one\": the skill's name, in place of skillId."
    • changedInput schema / properties / skillId / description
      Previous value: -"target:\"skills\" view:\"one\" (required) or view:\"runs\" (optional scope)."New value: +"target:\"skills\" view:\"one\" (required unless name is given) or view:\"runs\" (optional scope)."
    • changedInput schema / properties / view / description
      Previous value: -"Projects: directory (default), brief, section, resources, resource, history, scopes (Space metadata), attention (dated candidates), interactions (actor only). Secondary selector: target:\"tracker\" list|entries; target:\"rhythms\" list|one|due|runs; target:\"skills\" list|one|due|runs|history|trash (to run one, use penny_write \"skill_invoke\"); target:\"tags\" list|related."New value: +"Projects: directory (default), brief, section, resources, resource, history, scopes (Space metadata), attention (dated candidates), interactions (actor only). Secondary selector: target:\"tracker\" list|entries; target:\"rhythms\" list|one|due|runs; target:\"skills\" list|one|due|runs|history|trash (list/trash omit instructions; one: full skill by skillId or name); target:\"tags\" list|related."
  3. Changed1 schema field changed
    • addedInput schema / properties / ifRevision
      Added value: +{
      +  "description": "profile: the revision from your last read; returns {unchanged:true} if nothing changed.",
      +  "type": "string"
      +}
  4. First observed

TDQS

Score is being calculated.

Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.

Resources