Skip to main content
Glama

DevRecall

Your developer activity, aggregated on-device. No cloud sync. No telemetry. Your data never leaves your machine.

DevRecall pulls from Git, Slack, Google Calendar, Jira, Linear, Confluence, GitHub/GitLab/Bitbucket, Notion, and your Claude Code sessions; stores it in a local SQLite database; and turns it into standups, weekly reports, brag docs, and a chat that actually knows what you worked on.

Also ships an MCP server — any MCP-compatible coding tool (Claude Code, Cursor, Codex, Continue, Zed) can spawn it as a stdio subprocess and gain memory of everything you've shipped. /devrecall:recall what auth bug did I fix in February returns cited commits, PRs, and tickets inline.

📚 docs.devrecall.dev — install, configure, integrations, CLI reference.

Why

  • Local-first. SQLite on your laptop. Tokens in ~/.devrecall/tokens/ (0600). The Cloudflare Worker relay is a pass-through for OAuth callbacks only — it never sees your data.

  • LLM-optional. Bundled embeddings run offline (ONNX + all-MiniLM-L6-v2). Use local Ollama for chat, or bring your own OpenAI/Anthropic key.

  • Open source. MIT-licensed. Audit it, fork it, build it from source.

Related MCP server: total-agent-memory

Sources

Source

What gets collected

Git (local)

Commits, branch activity, files changed

GitHub / GitLab / Bitbucket

PRs/MRs, reviews, issues, comments

Slack

Your messages, threads you participated in

Google Calendar

Meetings attended, organized, declined

Jira / Linear

Issue transitions, comments, sprint membership

Confluence

Pages, blogposts, and comments you authored

Notion

Pages you created or edited

Claude Code

Coding-agent sessions, linked to repo & branch

Install

macOS — desktop app + CLI:

brew install --cask pavelpilyak/devrecall/devrecall

Installs DevRecall.app and puts the devrecall CLI on your PATH.

Linux / WSL — CLI and MCP server (no desktop app):

brew install pavelpilyak/devrecall/devrecall-cli

Without Homebrew, grab the tarball directly:

curl -L https://github.com/pavelpilyak/devrecall/releases/latest/download/devrecall-linux-x86_64.tar.gz \
  | tar xz && sudo mv devrecall-linux-x86_64 /usr/local/bin/devrecall

Supported on Ubuntu 22.04+ and equivalent (Debian 12+, Fedora 35+).

Windows — no native build. Everything except the desktop app runs under WSL using the Linux instructions above, including the MCP server, which your editor can spawn across the WSL boundary.

git clone https://github.com/pavelpilyak/devrecall.git
cd devrecall
make build          # → bin/devrecall

Requires Go 1.22+ with CGO enabled (for SQLite FTS5).

Then connect a source and generate your first standup:

devrecall auth github      # or: slack, google, jira, linear, notion, gitlab, bitbucket
devrecall standup

Full install + setup walkthrough at docs.devrecall.dev/install.

Development

make build              # bin/devrecall
make test               # tests with race detector
make lint               # golangci-lint

Build tags: fts5 enables SQLite full-text search; GO enables hugot's pure Go ONNX backend for embeddings.

The desktop app (Tauri + Svelte) lives in desktop/; the OAuth callback relay (Cloudflare Worker) in relay/.

Contributing

Bug reports and collector contributions are especially welcome. See CONTRIBUTING.md.

Security

SECURITY.md for responsible disclosure.

Available Tools

17 tools
count_activitiesA

Count activities in a time window, optionally grouped by source, type, identity, day, or week. The primitive behind 'how many', 'how often', and 'compare X vs Y' questions.

ParametersJSON Schema
NameRequiredDescriptionDefault
endNoExclusive end (RFC3339 or YYYY-MM-DD)
typeNo
startNoInclusive start (RFC3339 or YYYY-MM-DD)
sourceNo
group_byNoOptional grouping. Empty means just return the total.
identity_idNo

TDQS

A3.7/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, and the description does not disclose behavioral traits such as idempotency, side effects, or safety. Since it involves counting, it is likely read-only, but this is not stated.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two sentences with no wasted words. The purpose is stated first, followed by a helpful metaphor. Ideal length for quick comprehension.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given no output schema and moderate complexity, the description covers core functionality but lacks details on return format, pagination, or rate limits. Adequate for simple counting but not fully complete.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 50%. The description adds meaning by explaining grouping options and the time window for start/end, but does not elaborate on source, type, or identity_id beyond what is in the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool counts activities in a time window with optional grouping by source, type, identity, day, or week. It distinguishes itself from siblings like list_activities by focusing on aggregate counts.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description explains it is the primitive for 'how many', 'how often', and 'compare X vs Y' questions, providing clear context for when to use it. However, it does not explicitly exclude scenarios or mention alternatives.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

current_timeA

Return the current time, in the user's local timezone and in UTC. Prefer today for date filters — it is the user's local calendar date, which is what 'today' means to them.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A4.7/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the full burden, and it discloses key behavior: it returns the current time in both the user's local timezone and UTC. It also adds context about the meaning of 'today' for the user. It does not specify the exact output format, but for a zero-parameter clock tool this is a minor gap.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two short sentences, front-loaded with the core purpose ('Return the current time') and followed by a useful heuristic. No redundant wording; every sentence earns its place.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a zero-parameter, no-output-schema tool, the description is complete: it states what is returned, the timezone scope, and provides practical guidance about 'today' for date filters. An agent has enough information to decide when and how to use this tool correctly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The input schema has zero parameters, so the baseline for this dimension is 4. The description cannot add parameter meaning because no parameters exist, and the 'Prefer `today`' note provides relevant usage context without being tied to any parameter.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb and resource: 'Return the current time', and clarifies the exact output scope: user's local timezone and UTC. There is no ambiguity with sibling tools, which are all activity/person-oriented, so the tool is immediately distinguishable.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides explicit guidance: use this tool for current time, but 'Prefer `today` for date filters' because it represents the user's local calendar date. This tells the agent when to use this tool versus relying on a more appropriate construct, going beyond merely naming the tool.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_activityA

Fetch the full activity row (including content and metadata) for a given activity ID. Use after list_/search_ to drill into a specific row.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYes

TDQS

A3.9/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations provided, so description carries full burden. It indicates a read operation (fetch), but doesn't disclose permissions, rate limits, or side effects. Adequate but minimal for a simple fetch.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two sentences, no filler, front-loaded with the main action. Every word earns its place.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple one-parameter tool with no output schema, the description adequately covers purpose, usage context, and return nature. Could add a note about single-row return, but good overall.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Only one integer parameter 'id' with no schema description. Schema coverage is 0%. The description does not elaborate on the parameter beyond 'activity ID', missing details like format, source, or validity constraints.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool fetches the full activity row for a given ID, including content and metadata. It distinguishes from siblings by specifying it's for drill-down after list/search operations.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicitly says 'Use after list_/search_ to drill into a specific row', providing clear context for when to use this tool. Does not explicitly state when not to use, but the guidance is sufficient.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_summaryA

Fetch a single pre-built summary by period type and start date. Returns null if no summary exists for that period.

ParametersJSON Schema
NameRequiredDescriptionDefault
period_typeYes
period_startYesYYYY-MM-DD start date of the period

TDQS

A3.5/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, description covers return of null if not found, but does not explicitly state read-only nature or other behavioral traits.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two sentences, front-loaded with purpose, no waste. Efficiently communicates essential information.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Simple tool with two params and no output schema; description covers purpose and return type but lacks usage guidance. Adequate but not complete.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 50%; description only restates 'period type and start date' without adding meaning beyond schema. Enum and format are already clear from schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Description clearly states 'Fetch a single pre-built summary by period type and start date' with specific verb and resource, and distinguishes from sibling 'list_summaries'.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance on when to use this tool versus alternatives like 'list_summaries' or other search tools. Lacks context for when-not-to-use.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_work_itemA

Fetch a work item (a ticket or PR and everything linked to it) with its full cross-source timeline: the ticket, its commits, PRs, reviews, and discussions in chronological order. The best tool for 'show me everything about PROJ-123'.

ParametersJSON Schema
NameRequiredDescriptionDefault
idNoWork item ID (alternative to key)
keyNoWork item key: a ticket key like PROJ-123, or a pr:... key from list_work_items
limitNoMax timeline activities to return (default 50)

TDQS

A3.9/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations provided, so description carries full burden. Implies a read-only fetch operation but does not disclose permissions, error handling, rate limits, or whether the operation is safe. Adequate for a simple read but lacks explicit behavioral details.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two sentences, front-loaded with core purpose, no filler. Every word earns its place. Efficient and clear.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

No output schema, so the description should specify return structure. It mentions 'full cross-source timeline' and lists components, but lacks details on response format (e.g., chronological order, pagination). Sufficient to understand purpose but not fully complete for an agent.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% with descriptions for all 3 parameters (id, key, limit). The tool description adds no extra meaning beyond the schema; e.g., it doesn't clarify the relationship between id and key or the formatting of key. Baseline score appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Clearly states it fetches a work item with a full cross-source timeline, listing specific components (ticket, commits, PRs, reviews, discussions) and providing an example ("show me everything about PROJ-123"). Differentiates from siblings like list_work_items and get_activity.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicitly recommends the tool for comprehensive lookups with 'The best tool for "show me everything about PROJ-123"'. Lacks explicit when-not-to-use or alternative tool references, but the usage scenario is strongly implied.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

list_activitiesA

List activities in a time window with optional source/type/person filters. Returns shallow rows (no body); use get_activity to fetch full content.

ParametersJSON Schema
NameRequiredDescriptionDefault
endNoExclusive end (RFC3339 or YYYY-MM-DD)
tagNoFilter by enrichment tag, e.g. feature, bugfix, refactor, review, testing, docs, deploy, release, incident, planning, discussion, decision, meeting, dependency, security, performance, status-change
typeNoFilter by activity type: commit, message, meeting, ticket, review, pull_request, merge_request, issue, note
limitNoMax rows to return (default 50)
startNoInclusive start (RFC3339 or YYYY-MM-DD)
offsetNoNumber of leading rows to skip
sourceNoFilter by source: git, slack, calendar, github, gitlab, bitbucket, jira, confluence, linear, manual
identity_idNoFilter by identity (person) ID

TDQS

A4/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description discloses the key behavioral trait of returning shallow rows (no body). It does not cover pagination, ordering, default time window, or any authentication or rate limits, leaving gaps.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two sentences efficiently deliver the core purpose and key behavior, with no extraneous information. Front-loaded with action and resource.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given 8 parameters, no output schema, and no annotations, the description covers the main purpose and key limitation (shallow rows) but lacks details on return format, pagination, or defaults. It is adequate but not fully comprehensive.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so baseline is 3. The description adds context that 'start' and 'end' define a time window and that filters are optional, but does not provide significant additional meaning beyond the schema's parameter descriptions.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly specifies the verb 'list', the resource 'activities', and the scope 'in a time window with optional filters'. It distinguishes from sibling tool 'get_activity' by noting that it returns shallow rows.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides explicit guidance to use 'get_activity' for full content, implying this tool is for overviews. However, it does not mention alternatives like 'search_activities' or conditions when not to use.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

list_identitiesA

List people known to the system (Git authors, Slack users, etc.), optionally filtered by a name/email substring.

ParametersJSON Schema
NameRequiredDescriptionDefault
queryNoOptional case-insensitive substring filter on name/email

TDQS

A3.5/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries full burden. It explains the filter behavior but does not disclose pagination, response format, or whether identities are limited to specific sources. For a straightforward listing tool, this is adequate but not exceptional.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Single sentence, front-loaded with the action, no wasted words. Efficiently communicates the core functionality and optional filter.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

While the tool is simple (1 optional param, no output schema), the description doesn't mention return format. For completeness, it should indicate it returns a list of identity objects. Current description is adequate but leaves a gap.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% and the description adds little beyond the schema (it repeats the filter concept). Baseline is 3 for high coverage; no additional semantic enrichment.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly defines the tool's purpose with a specific verb ('List') and resource ('people known to the system'), and provides concrete examples (Git authors, Slack users). It implicitly distinguishes from sibling tools like 'resolve_person' which likely focuses on a single identity.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance on when to use this tool versus alternatives. With many sibling tools (e.g., resolve_person, search_activities), an agent could benefit from direction such as 'Use this to browse all identities; for detailed info on a specific person use resolve_person.'

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

list_summariesA

List pre-built periodic summaries (daily/weekly/monthly/quarterly). Prefer these over re-summarizing raw activities when answering 'summarize my Q1' or 'what happened last week'.

ParametersJSON Schema
NameRequiredDescriptionDefault
endNo
limitNo
startNo
period_typeYes

TDQS

A4/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the full burden. It implies a read-only list operation but does not explicitly state safety, pagination, ordering, or what happens when no summaries exist. The behavioral details are minimal.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two sentences, front-loaded with purpose. Every word adds value, no redundancy.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given no output schema and 4 parameters without descriptions, the tool description is adequate for a simple list tool but incomplete. It lacks details on parameter formats, behavior, and output format, though it effectively distinguishes from siblings.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, so the description must compensate. It adds meaning for period_type by listing the enum values, but provides no format or syntax for start, end, or limit parameters. The examples hint at date ranges but are insufficient.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the verb 'List' and the resource 'pre-built periodic summaries', explicitly naming the period types (daily/weekly/monthly/quarterly). It distinguishes from sibling tools like get_summary by advising to prefer this over re-summarizing raw activities.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description explicitly tells when to use the tool (for periodic summaries like 'summarize my Q1' or 'what happened last week') and implies when not to (over re-summarizing raw activities). This provides clear context for the agent.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

list_work_itemsA

List work items (tickets/PRs with their linked activity), most recently active first. The structural answer to 'what was I working on last week' — each item groups a ticket with its commits, PRs, and discussions. Use get_work_item for the full timeline of one item.

ParametersJSON Schema
NameRequiredDescriptionDefault
endNoOnly items active before this date
limitNoMax items to return (default 25)
queryNoSubstring match on key or title
startNoOnly items active on/after this date (RFC3339 or YYYY-MM-DD)
statusNoFilter by status, e.g. Done, In Progress, In Review

TDQS

A4.4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description discloses ordering and grouping behavior. It implies read-only usage but does not discuss rate limits or authentication; however, for a list tool this is adequate.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two sentences: first explains purpose and ordering, second provides context and alternative. No wasted words, front-loaded.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given 5 parameters, no output schema, and moderate sibling count, the description adequately explains what is returned and when to use it. Could mention pagination implications of limit, but not essential.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so baseline is 3. The description does not add meaningful information beyond the schema's parameter descriptions.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool lists work items (tickets/PRs with linked activity) ordered by most recent activity, and distinguishes it from the sibling get_work_item.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicitly provides use case ('what was I working on last week') and directs to get_work_item for more detail on a single item, guiding correct selection.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

log_eventA

Record a manual note — a decision, in-person conversation, observation, or anything else worth remembering. Stored as type=note from source=manual and indexed alongside everything else. Use this when the user dictates context you want recallable later.

ParametersJSON Schema
NameRequiredDescriptionDefault
tagsNoOptional tags for filtering later
textYesThe note body. First line (truncated to 200 chars) becomes the title.
peopleNoNames/emails of people referenced in the note

TDQS

A4.2/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations provided, so description bears full burden. Discloses side effects (stored as note type, indexed) and a behavioral detail (first line becomes title). Lacks info on auth, rate limits, or potential destruction, but for a simple write tool this is adequate.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two sentences, no filler, front-loaded with the core action and followed by usage guidance. Every sentence earns its place.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple write tool with three parameters and no output schema, the description covers purpose, usage, and storage behavior. Could mention return value or confirmation, but the note indexing detail provides sufficient feedback expectation.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% with descriptions for all three params. Description adds extra value by explaining that the first line of 'text' becomes the title (truncated to 200 chars), which is not in the schema. Tags and people descriptions in schema are sufficient.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Specifies a concrete action ('Record a manual note') with clear resource ('note') and differentiators (type=note, source=manual). Distinguishes itself from sibling tools which are predominantly read/search operations.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicitly states when to use: 'when the user dictates context you want recallable later.' Does not state when not to use or name specific alternatives, but the context is clear enough.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

prep_meetingA

Brief for a calendar meeting: returns the event details plus each attendee's recent shipped activity. Look up by activity_id if known, otherwise by date+title_contains. Use this to walk into a 1:1 or sync knowing what everyone's been doing.

ParametersJSON Schema
NameRequiredDescriptionDefault
dateNoYYYY-MM-DD when activity_id is unknown — find the meeting that day matching title_contains
activity_idNoCalendar activity ID, if you already have it (from list_activities source=calendar)
lookback_daysNoHow far back to fetch each attendee's recent activity (default 30)
title_containsNoSubstring filter on meeting title when looking up by date
per_person_limitNoMax activities per attendee (default 10)

TDQS

A4.2/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full burden. It states the tool 'returns' data, implying a read-only operation, but does not explicitly confirm no side effects, authentication needs, or rate limits. It covers what it does but lacks depth on behavioral traits.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is two sentences: the first states the core functionality, and the second provides lookup guidance and use case. No wasted words, front-loaded with the most important information.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given 5 parameters and no output schema, the description covers the main purpose, lookup modes, and use case. It is missing details about the return format or edge cases like empty results, but it is sufficient for an agent to understand when and how to use the tool.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so baseline is 3. The description adds value by explaining the conditional relationship between activity_id and date+title_contains (use one or the other), which is not captured in the schema. The description also reinforces the purpose of lookback_days and per_person_limit, though those are already described in the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool returns event details plus each attendee's recent shipped activity, which is a specific verb-resource combination ('Brief for a calendar meeting'). It distinguishes from siblings like get_activity or list_activities by combining multiple data sources.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides explicit lookup strategies (by activity_id vs date+title_contains) and a clear use case ('walk into a 1:1 or sync'). It does not explicitly state when not to use this tool versus alternatives, but the context is clear.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

recent_decisionsA

Find decision-shaped activity in a date range: manual notes (type=note) merged with anything whose title or body hits decided/decision/RFC/ADR. Use this before answering 'what did we decide about X' or composing a quarterly summary.

ParametersJSON Schema
NameRequiredDescriptionDefault
endNo
limitNoMax rows (default 50)
startNo
sourceNoOptional source filter

TDQS

A4/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full burden. It explains that the tool merges manual notes and contextual hits, but does not disclose whether it is read-only, idempotent, or any auth/rate-limit constraints. For a query tool, this is adequate but not thorough.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is extremely concise—two sentences that pack the purpose, examples, and usage guidance. No unnecessary words.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Without an output schema, the description explains the concept of results (decision-shaped activity) but does not detail the exact return fields. For a moderate-complexity tool with 4 parameters, it covers the essential context. It could be improved by mentioning result structure.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 50% (start and end lack descriptions). The description adds context about the date range but does not specify format (e.g., ISO 8601). It compensates partially by explaining the overall purpose, but does not add significant meaning beyond the schema for each parameter.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool finds decision-shaped activity in a date range, specifying it merges manual notes and content matching keywords like 'decided' or 'RFC'. It distinguishes itself from sibling tools like search_activities by focusing on decision-related content.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description explicitly tells when to use the tool: before answering 'what did we decide about X' or composing a quarterly summary. It does not explicitly state when not to use it, but provides clear context for its application.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

resolve_personA

Resolve a name or email to a single identity (the closest match). Returns the matched identity or null if no candidate is found.

ParametersJSON Schema
NameRequiredDescriptionDefault
name_or_emailYes

TDQS

A4.1/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description discloses key behaviors: returns closest single match, and returns null if no candidate. However, it does not mention authentication needs, rate limits, or error conditions.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two sentences with no redundancy. Purpose, process, and result are stated efficiently and clearly.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the simple parameter set and no output schema, the description covers input, behavior, and output completely. It is sufficient for an agent to understand and use the tool correctly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema has 0% coverage for the single parameter 'name_or_email'. The description adds meaning by stating it accepts a name or email and resolves to an identity, but does not specify format requirements or if partial/fuzzy matching is supported.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the verb 'Resolve' and resource 'name or email to a single identity', distinguishes from sibling 'list_identities' by implying a single match, and specifies the return value (identity or null).

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies usage for matching a single identity from a name/email, but does not explicitly state when to use this tool vs alternatives like 'list_identities' or 'who_worked_on'. It lacks exclusion criteria or prerequisite conditions.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

search_activitiesA

Hybrid search over activity titles and content, combining keyword (FTS5) and semantic similarity. This is the default search tool — it handles both concrete phrases like 'retry strategy' and loosely-worded queries, so prefer it unless you specifically need pure vector similarity.

ParametersJSON Schema
NameRequiredDescriptionDefault
endNo
tagNoFilter matches by enrichment tag (e.g. bugfix, decision, incident)
limitNo
queryYesKeywords to search for in titles and content
startNo
sourceNo

TDQS

A4.1/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries the behavioral burden. It discloses the hybrid matching mechanism (FTS5 keyword plus semantic similarity) and the breadth of query handling, which is useful behavioral context. It does not detail result ranking or pagination, but the core search behavior is transparently described.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two sentences with no filler. The mechanism is front-loaded, followed by a decision rule. Every sentence contributes useful information for tool selection.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given six parameters, low schema coverage, no annotations, and no output schema, the description is not complete enough. It provides strong orientation but leaves optional-filter semantics and return-value expectations underspecified.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is only 33%, and the description does not compensate. It clarifies the query semantics implicitly but does not explain start, end, limit, or source meaning or format. The agent is left to guess for four of six parameters.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb and resource: 'Hybrid search over activity titles and content'. It further distinguishes itself from the sibling semantic_search_activities by declaring that this is the default tool unless pure vector similarity is needed.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It gives an explicit usage rule: prefer this tool by default, and provides a clear when-not condition: use it unless you specifically need pure vector similarity. It also notes the tool handles both concrete and loosely-worded queries, helping an agent choose correctly.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

semantic_search_activitiesA

Pure vector similarity search over activities. search_activities already blends this with keyword matching, so reach for this only when that returns nothing useful and the query is purely conceptual with no reliable keywords. Returns shallow rows ranked by similarity.

ParametersJSON Schema
NameRequiredDescriptionDefault
endNo
limitNo
queryYes
startNo

TDQS

A4/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the full burden of behavioral disclosure. It adds useful context about the pure vector nature and the shallow, similarity-ranked results, but it does not explicitly state that this is read-only, nor does it clarify what "shallow rows" include or whether any side effects exist. Some safety information is left to inference from the word "search."

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is two sentences with no filler. It front-loads the core purpose, immediately contrasts the tool with search_activities, and then gives the usage condition and result type. Every sentence earns its place.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The description does a strong job on purpose and usage context, and it names the correct sibling alternative. However, without an output schema or parameter-level description, an agent still has to infer the meaning of start/end/limit and what "shallow rows" actually contain. This is adequate but leaves meaningful gaps.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, so the description must compensate for the missing parameter meanings. It provides semantic context for the query concept but does not explain start, end, or limit. The parameter names are suggestive, but the description adds no concrete details beyond what the schema already shows.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description opens with a specific verb and resource: "Pure vector similarity search over activities." It clearly distinguishes itself from the sibling search_activities by noting that the sibling blends vector and keyword matching, and it describes the output as "shallow rows ranked by similarity."

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description gives explicit usage guidance: reach for this only when search_activities returns nothing useful and the query is purely conceptual with no reliable keywords. It names the alternative and provides a clear exclusion condition, leaving no ambiguity about when to choose this tool.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

who_worked_onA

Activities authored by a specific person, optionally narrowed by a keyword query and date range. Pass identity_id if you have one (from list_identities/resolve_person); otherwise pass name_or_email and the tool resolves it.

ParametersJSON Schema
NameRequiredDescriptionDefault
endNo
limitNoMax rows (default 50)
queryNoOptional keyword to narrow within this person's activity
startNo
sourceNo
identity_idNoIdentity ID; if unknown, pass name_or_email instead
name_or_emailNoResolved via identity table when identity_id is not given

TDQS

A3.9/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations exist, so the description carries full burden. It reveals the resolution behavior for name_or_email but does not discuss performance, pagination, error handling, or the nature of the response. Adequate but lacks depth.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two sentences with no wasted words. The core purpose is front-loaded, followed by parameter resolution guidance. Perfectly concise.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a 7-param tool with no output schema and many siblings, the description covers the main idea but misses details on date range format, source usage, and result structure. Leaves some uncertainty for complex queries.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 57% (4 of 7 params described). The description adds meaning for identity_id and name_or_email (resolution advice) but does not explain start, end, or source parameters. Falls short of full compensation.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool returns 'Activities authored by a specific person', using a specific verb and resource. It distinguishes from siblings like search_activities and resolve_person by focusing on person-scoped activity retrieval.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Provides clear guidance on when to use identity_id vs name_or_email, and references list_identities/resolve_person. Does not explicitly exclude alternative tools or scenarios, but the context is sufficient for basic usage.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections. Dates show when Glama detected each change.

  1. 4 tool updatesv0.1.23
    • Addedget_work_item
    • Changedlist_activities1 field changed
      • addedInput schema / properties / tag
        Added value: +{
        +  "description": "Filter by enrichment tag, e.g. feature, bugfix, refactor, review, testing, docs, deploy, release, incident, planning, discussion, decision, meeting, dependency, security, performance, status-change",
        +  "type": "string"
        +}
    • Addedlist_work_items
    • Changedsearch_activities1 field changed
      • addedInput schema / properties / tag
        Added value: +{
        +  "description": "Filter matches by enrichment tag (e.g. bugfix, decision, incident)",
        +  "type": "string"
        +}
  2. 15 tool updatesv0.1.0
    • First observedcount_activities
    • First observedcurrent_time
    • First observedget_activity
    • First observedget_related_activities
    • First observedget_summary
    • First observedlist_activities
    • First observedlist_identities
    • First observedlist_summaries
    • First observedlog_event
    • First observedprep_meeting
    • First observedrecent_decisions
    • First observedresolve_person
    • First observedsearch_activities
    • First observedsemantic_search_activities
    • First observedwho_worked_on

TDQS

A3.9/5.0
Disambiguation4/5

Most tools have clearly distinct purposes—search, list, count, drill-down, and work-item aggregation are separated well. The main overlaps are get_related_activities vs get_work_item, and search_activities vs semantic_search_activities, but the descriptions provide enough guidance to choose correctly.

Naming Consistency4/5

The core set follows a consistent verb_noun snake_case pattern like list_activities, count_activities, and resolve_person. A few names deviate—who_worked_on, recent_decisions, current_time, and the abbreviated prep_meeting—but the overall style remains readable and predictable.

Tool Count4/5

At 17 tools, this is slightly above the ideal 3-15 range, but the server covers a broad domain spanning activity search, work items, people, summaries, and meeting prep. Most tools earn their place and support distinct workflows rather than padding the surface.

Completeness4/5

The read/query surface is strong: search, list, count, drill-down, person resolution, work-item aggregation, and pre-built summaries cover the main recall workflows. The notable gap is that log_event supports creating manual notes but there is no update or delete path, and there is no explicit metadata tool for enumerating sources or types.

Maintenance

ActivityActive
ResponsivenessNo issues

Related MCP Connectors

Related MCP Servers

  • A
    license
    A
    quality
    A
    maintenance
    Shared, code-grounded memory for developers and their coding agents. Capture a learning once and the whole team plus every agent recalls it; memory is grounded in your code and stored as git-tracked JSON reviewed in PRs, with citations validated on write and stale memory withheld from recall. Works with any MCP client.
    11
    32
    GPL 3.0
  • A
    license
    A
    quality
    A
    maintenance
    Semantic codebase search + persistent working memory for AI code editors. Local, zero-config, MCP. No API key.
    8
    23
    2
    MIT
  • A
    license
    B
    quality
    A
    maintenance
    Local-first, auditable memory for Codex, Claude Code, and MCP clients. It stores scoped user/project memory in SQLite or Postgres, serves read-only recall and inspection tools by default, and supports opt-in governed writeback with review and forget controls.
    8
    262
    17
    MIT

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/pavelpilyak/devrecall'

If you have feedback or need assistance with the MCP directory API, please join our Discord server