# Griasa (mcpb · Griasa.mcpb)

Local-first Mac meeting memory: promises, decisions, people, the next-call brief. Read-only.

- Trust score: 38/100 (low)
- Change this week: −1
- Registry status: active
- Liveness: live
- Owner verified: no
- Last scored: 2026-11-05

## Components

- mcpb · `Griasa.mcpb`: 38/100 (this document), [markdown](https://verifymcp.io/servers/stari-am-griasa/griasa.md), [page](https://verifymcp.io/servers/stari-am-griasa/griasa)

## Channel facts

- Registry: `mcpb`
- Package: `https://github.com/Stari-am/griasa/releases/download/v1.0.26/Griasa.mcpb`
- Transport: `stdio`
- SHA-256: `9146e4cb6796701d03c033b7d8090540774ae460999f1a7f7032c9d8c913f25b`

## Trust breakdown

How this component scores in each security and reliability category. Every signal is checked automatically from public evidence about the published package, including repeated runs of it in an isolated sandbox, and we only credit what we can confirm. Scores are 0–100 per category. Scoring method: https://verifymcp.io/docs/scoring (what has changed: https://verifymcp.io/docs/scoring/changelog)

Scored 2026-11-05.

- **Supply Chain Security**: 0/100
  - No malware scan is available for this kind of package: the supply-chain vendors we use do not cover it. This is a permanent gap in our coverage, not a finding about the package.
  - Known CVEs could not be checked: we could not reach the registry to check. This is a gap on our side.
  - Install-script risk not yet assessed.
  - Dependency health could not be checked: we could not reach the registry to check. This is a gap on our side.
- **Provenance & Transparency**: 32/100
  - Source repository is publicly reachable at the declared URL.
  - Provenance check failed: no build-provenance attestation is published.
  - License check failed: no license is declared.
  - Actively maintained (last published 1 days ago).
  - Disclosure check failed: no security disclosure policy was found in the source repository.
- **Schema Quality & AI Usability**: 76/100
  - AI-judged instruction clarity (excellent).
  - Context-footprint check failed: tool/resource definitions use about 1591 tokens (~132/item across 12 items; 12 tools + 0 resources), over budget; trim descriptions and params.
  - Usage-examples check failed: none of the tools include examples.
- **Stability & Change Management**: 0/100
  - Stability not yet verified: two runs of the same published version returned different tool surfaces, so we cannot tell a change in the package from a difference in our own sandbox run.
- **Tool Coverage**: 100/100
  - 100% of tools have a non-trivial description (not blank, and not just the tool's name).
  - 100% of tool parameters carry a description.
  - Structured output schemas are declared (100% of tools); any adoption earns full credit.
- **Tool Safety**: 100/100
  - No prompt-injection markers were found in the server instructions, tool names or descriptions we captured.
  - We read all 12 captured tool definition(s), and no name or description among them implies an irreversible operation.
  - An AI judge read all 13 captured unit(s) of tool text and found none that tries to manipulate the model reading it.
- **Capabilities**: 100/100
  - Implements a supported MCP spec version (2025-11-25); the latest is 2026-07-28.

**Unverified: 2 categories.** Categories scored 0 because we could not verify them: a data source with nothing on this package, evidence we could not reach, or a check we could not run. We only credit what we can confirm.

## Install

### How do I install the Griasa MCP server?

Griasa ships as an MCPB bundle, a single file you download and open in an MCP host that supports MCPB bundles, such as Claude Desktop. The host reads the launch command from the bundle's own manifest, so there is no command to copy. Before opening it, check the file's SHA-256 matches the one the MCP registry declares for it, 9146e4cb6796701d03c033b7d8090540774ae460999f1a7f7032c9d8c913f25b; the commands to do that are on this page. If it does not match, do not open it.

- Download bundle: `https://github.com/Stari-am/griasa/releases/download/v1.0.26/Griasa.mcpb`
- SHA-256: `9146e4cb6796701d03c033b7d8090540774ae460999f1a7f7032c9d8c913f25b`

### Verify on macOS / Linux

```bash
echo "9146e4cb6796701d03c033b7d8090540774ae460999f1a7f7032c9d8c913f25b  Griasa.mcpb" | shasum -a 256 -c
```

### Verify on Windows (PowerShell)

```powershell
(Get-FileHash -Algorithm SHA256 .\Griasa.mcpb).Hash -eq "9146e4cb6796701d03c033b7d8090540774ae460999f1a7f7032c9d8c913f25b"
```

## Changelog

Every change recorded for this component, newest first. Days that predate change tracking, or that we cannot explain, say so: "we were watching and nothing happened" and "we were not watching" are different claims.

### 2026-11-01 (score 38, −1)

- [functional regression] Schema quality: pass → fail

### 2026-10-27 (score 39, 0)

- [security regression] Stability: 0.07 → unverified
- [functional regression] Schema quality: 72 → 104

### 2026-10-26 (score 39, +1)

- [functional improvement] Stability: unverified → 0.07

### 2026-10-24 (score 38)

First indexed and scored.

## MCP tools (12)

### `list_commitments` (~224 tokens)

Open promises

Open promises from recorded meetings, newest first, in two lists: 'mine' (what the user owes) and 'waiting_on_others' (what others owe the user); finished ones are left out. Use for "what do I owe", "what is overdue", "what is Anna still waiting on". For one colleague's whole picture use get_person; to get a name's exact spelling first, list_people.

Input parameters:

- `limit` (integer): Most items in each of the two lists. Default 50; older promises past the limit are left out.
- `overdue_only` (boolean): Only promises past their due date.
- `person` (string): Only promises owned by this person: the exact name as list_people returns it, case-insensitive. Omit for everyone.
- `project` (string): Only promises from meetings filed under this project id, from list_projects.
- `team_only` (boolean): Only promises made by the user's direct reports (people marked "Reports to me" in Griasa). For "what does my team owe me".

Output parameters:

- `mine` (array)
- `waiting_on_others` (array)

### `list_decisions` (~202 tokens)

Decisions

Decisions taken in recorded meetings, newest first: what was decided, why, who made the call, the options not chosen, and the exact words it was decided in. Use for "what did we decide about X", "why did we choose Y", "did we ever consider Z". Reversed decisions are included and marked; leave them out with standing_only.

Input parameters:

- `limit` (integer): Most decisions to return. Default 20.
- `person` (string): Only decisions made by this person or in meetings they took part in.
- `project` (string): Only decisions from meetings filed under this project id, from list_projects.
- `query` (string): Words to look for in the decision, its reason, who decided, or the options rejected. Omit for the newest.
- `since` (string): Only decisions from meetings on or after this date, YYYY-MM-DD.
- `standing_only` (boolean): Leave out decisions that were reversed.

Output parameters:

- `decisions` (array)
- `returned` (integer)

### `get_person` (~64 tokens)

Person

Everything known about one colleague: notes, email addresses, their open promises, and the last recorded meeting with them. Accepts a name or email in any spelling; if nobody matches, returns the known names.

Input parameters:

- `name` (string, required): Name or email address of the person.

Output parameters:

- `found` (boolean)

### `search_meetings` (~168 tokens)

Search meetings

Find recorded meetings by words in the title or text, optionally with one participant. Words match in any order and in any grammatical form, and, when the user has turned on search by meaning, by meaning across languages; best matches first, otherwise newest first. Returns id, title, date, participants, summary and, when text matched, a short 'matched' excerpt — never the transcript. Use the id with get_meeting or get_transcript.

Input parameters:

- `limit` (integer): Most meetings to return. Default 10.
- `person` (string): Only meetings this person took part in.
- `project` (string): Only meetings filed under this project id, from list_projects.
- `query` (string): Words to look for in the title or text, in any order.

Output parameters:

- `meetings` (array)
- `returned` (integer)

### `get_meeting` (~53 tokens)

Meeting

One meeting by id: summary, participants and the promises made in it. Does not include the transcript; use get_transcript for what was said.

Input parameters:

- `id` (string, required): Meeting id from search_meetings.

Output parameters:

- `found` (boolean)

### `get_transcript` (~55 tokens)

Meeting transcript

The full transcript of one meeting: everything said, including remarks in passing. Long and sensitive; call it only when get_meeting's summary is not enough.

Input parameters:

- `id` (string, required): Meeting id from search_meetings.

Output parameters:

- `found` (boolean)

### `get_next_meeting_brief` (~78 tokens)

Next meeting brief

Prep for the user's next calendar meeting: attendees, what each side promised the other, and what was discussed last time. Built from the calendar and recorded meetings; returns available=false with a reason when no meeting is coming up. Use before a call; for a meeting that already happened use search_meetings and get_meeting.

Output parameters:

- `available` (boolean)

### `list_upcoming_meetings` (~151 tokens)

Upcoming meetings

The user's calendar meetings in the next days, soonest first, each with its attendees and the open promises between the user and them: what the user promised them and what they promised the user. Use for "what's my week", "what do I owe the people I'm meeting". Only events with other people or a call link; all-day events are left out. Needs calendar access; returns available=false with a reason without it. For the very next call in detail, get_next_meeting_brief.

Input parameters:

- `days` (integer): How many days ahead to look. Default 7, at most 14.
- `limit` (integer): Most meetings to return. Default 20.

Output parameters:

- `available` (boolean)

### `draft_followup` (~133 tokens)

Follow-up draft

A follow-up email for one meeting, written from Griasa's notes: the summary and who promised what for all participants, or, with person, only what that person and the user promised. Returns subject, body, the addresses Griasa knows and a mailto link. Griasa sends nothing: hand the link to the user or send the draft with the user's own mail tool after they confirm. Meeting id from search_meetings.

Input parameters:

- `id` (string, required): Meeting id from search_meetings.
- `person` (string): Only this participant's promises and the user's, addressed to them.

Output parameters:

- `found` (boolean)

### `get_context` (~185 tokens)

Context pack

Everything Griasa knows about one person, project or topic, in one call and within a size budget: open promises in both directions (overdue first), recent meetings with their summaries, and for a person the next meeting with them. Use it before answering a question about someone or something; follow up with get_meeting or get_transcript only for detail it leaves out. When the budget is tight, the oldest meetings are left out first and `omitted` says how many.

Input parameters:

- `about` (string, required): A person's name or email, a project name, or topic words.
- `budget_chars` (integer): Roughly how much text to return. Default 12000, at most 40000.
- `kind` (string): person, project or topic. Omit to let Griasa decide: a known person, then a project, then a topic.

Output parameters:

- `found` (boolean)
- `kind` (string)

### `list_people` (~40 tokens)

People

Everyone Griasa knows by name, with how many of their promises are still open. Use to find the exact spelling before get_person or list_commitments.

Output parameters:

- `people` (array)

### `list_projects` (~80 tokens)

Projects

List every project the user files recordings and notes under, with id and name, in the order the user keeps them in Settings; unfiled items sit in an Inbox that is not listed. Use to answer what the user is working on or to match a meeting to a project; pass an id as project to search_meetings or list_commitments.

Output parameters:

- `projects` (array)

## Diagnostics

Captured diagnostic sections: Provenance. The full working is on the page: https://verifymcp.io/servers/stari-am-griasa/griasa#diagnostics

## Score history

- 2026-11-05: 38
- 2026-11-04: 38
- 2026-11-03: 38
- 2026-11-02: 38
- 2026-11-01: 38
- 2026-10-31: 39
- 2026-10-30: 39
- 2026-10-29: 39
- 2026-10-28: 39
- 2026-10-27: 39
- 2026-10-26: 39
- 2026-10-25: 38
- 2026-10-24: 38

## Common questions

### What is the Griasa MCP server?

Griasa is an MCP server listed in the public MCP registry as io.github.Stari-am/griasa. Local-first Mac meeting memory: promises, decisions, people, the next-call brief. Read-only. This page covers its MCPB bundle (https://github.com/Stari-am/griasa/releases/download/v1.0.26/Griasa.mcpb).

### Is the Griasa MCP server safe to use?

Griasa scores 38 out of 100 on VerifyMCP. That is a record of what we were able to check automatically, not an endorsement. The category breakdown on this page shows every signal behind the number, including the ones we could not confirm.

### What tools does the Griasa MCP server expose?

Griasa exposes 12 tools: list_commitments, list_decisions, get_person, search_meetings, get_meeting, and 7 more. Their descriptions and schemas cost roughly 1,433 tokens of context every time the server is loaded.

## Links

- Repository: https://github.com/Stari-am/griasa
- Website: https://stari-am.github.io/griasa/
- Changelog RSS feed: https://verifymcp.io/servers/stari-am-griasa/griasa.xml
- Changelog JSON feed: https://verifymcp.io/servers/stari-am-griasa/griasa.json
- HTML version of this page: https://verifymcp.io/servers/stari-am-griasa/griasa
