{"openapi":"3.1.0","info":{"title":"Minutestaker API","version":"0.1.0","description":"A fully local meeting-minutes template generator and reference: structured minutes documents, action-item parsing, decision-log entries, agenda-to-template conversion, meeting-type/style guidance, next-steps sorting, and a sensitive-content flagging scan.\n\nEvery operation is read-only or compute-only. The same tools are available over MCP (streamable HTTP) at https://minutestaker.connectorbay.com/mcp.","contact":{"name":"Unify Dynamics LLC","email":"hr@unifydynamics.com","url":"https://connectorbay.com/minutestaker/docs"},"termsOfService":"https://connectorbay.com/minutestaker/terms"},"servers":[{"url":"https://minutestaker.connectorbay.com"}],"externalDocs":{"url":"https://connectorbay.com/minutestaker/docs"},"security":[{},{"bearer":[]}],"components":{"securitySchemes":{"bearer":{"type":"http","scheme":"bearer","description":"Optional. A Pro API key raises rate limits; no credentials are required."}},"schemas":{"Error":{"type":"object","properties":{"ok":{"const":false},"error":{"type":"object"}}}}},"paths":{"/v1/tools/generate_minutes":{"post":{"operationId":"generate_minutes","summary":"Generates a structured meeting-minutes document (markdown) sized to the meeting type, with action items","description":"Generates a structured meeting-minutes document (markdown) sized to the meeting type, with action items\n    auto-parsed into owner/task/due-date. Use for \"write up minutes for today's standup\", \"turn these notes into\n    board meeting minutes\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"topic":{"description":"Meeting title/topic.","minLength":1,"title":"Topic","type":"string"},"attendees":{"description":"Names of people who attended.","items":{"type":"string"},"title":"Attendees","type":"array"},"meeting_date":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"description":"Date of the meeting, any format you like.","title":"Meeting Date"},"absent":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"default":null,"description":"Names invited but absent.","title":"Absent"},"decisions":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"default":null,"description":"Decisions made, each as one finished statement.","title":"Decisions"},"discussion_points":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"default":null,"description":"Key discussion notes (not a transcript).","title":"Discussion Points"},"action_items":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"default":null,"description":"Free text like 'Priya: send the deck by Friday' — owner and due date are parsed automatically.","examples":[["Priya: send the deck by Friday","@Sam follow up with legal by 2026-10-01"]],"title":"Action Items"},"meeting_type":{"default":"general","description":"general | standup | board_meeting | project_kickoff | retrospective | one_on_one","title":"Meeting Type","type":"string"}},"required":["topic","attendees"],"title":"generate_minutesArguments","type":"object"}}}},"responses":{"200":{"description":"Tool result. `ok: true` on success; `ok: false` with a structured `error` (provider_unavailable, upstream_error, bad_input) when the tool could not answer.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"422":{"description":"Arguments failed validation","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded (see Retry-After)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"x-read-only":true}},"/v1/tools/action_item_formatter":{"post":{"operationId":"action_item_formatter","summary":"Parses free-text action items into {owner, task, due_date}, flagging any with no recognizable owner or","description":"Parses free-text action items into {owner, task, due_date}, flagging any with no recognizable owner or\n    due date so they don't silently fall through the cracks. Use for \"turn this into an action item with an\n    owner and date\", \"who owns this and when is it due\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"action_items":{"description":"Free-text action items.","examples":[["Alex to update the roadmap by next Tuesday","@Jordan: file the report by 2026-10-15"]],"items":{"type":"string"},"minItems":1,"title":"Action Items","type":"array"}},"required":["action_items"],"title":"action_item_formatterArguments","type":"object"}}}},"responses":{"200":{"description":"Tool result. `ok: true` on success; `ok: false` with a structured `error` (provider_unavailable, upstream_error, bad_input) when the tool could not answer.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"422":{"description":"Arguments failed validation","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded (see Retry-After)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"x-read-only":true}},"/v1/tools/decision_log_entry":{"post":{"operationId":"decision_log_entry","summary":"Formats one decision with rationale, owner and date as a standalone entry for a running decision log kept","description":"Formats one decision with rationale, owner and date as a standalone entry for a running decision log kept\n    separate from meeting minutes. Use for \"log this decision with the reasoning behind it\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"decision":{"description":"The decision, stated plainly.","minLength":1,"title":"Decision","type":"string"},"rationale":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"description":"Why this was decided, for future context.","title":"Rationale"},"owner":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"description":"Who made or is accountable for the decision.","title":"Owner"},"decided_on":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"description":"Date decided.","title":"Decided On"}},"required":["decision"],"title":"decision_log_entryArguments","type":"object"}}}},"responses":{"200":{"description":"Tool result. `ok: true` on success; `ok: false` with a structured `error` (provider_unavailable, upstream_error, bad_input) when the tool could not answer.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"422":{"description":"Arguments failed validation","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded (see Retry-After)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"x-read-only":true}},"/v1/tools/agenda_to_minutes_template":{"post":{"operationId":"agenda_to_minutes_template","summary":"Turns a plain agenda into a ready-to-fill blank minutes document for the given meeting type — take it","description":"Turns a plain agenda into a ready-to-fill blank minutes document for the given meeting type — take it\n    into the meeting and fill in the blanks live. Use for \"give me a minutes template for this agenda\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"topic":{"description":"Meeting title/topic.","minLength":1,"title":"Topic","type":"string"},"agenda_items":{"description":"Planned agenda topics, in order.","items":{"type":"string"},"minItems":1,"title":"Agenda Items","type":"array"},"meeting_type":{"default":"general","description":"general | standup | board_meeting | project_kickoff | retrospective | one_on_one","title":"Meeting Type","type":"string"}},"required":["topic","agenda_items"],"title":"agenda_to_minutes_templateArguments","type":"object"}}}},"responses":{"200":{"description":"Tool result. `ok: true` on success; `ok: false` with a structured `error` (provider_unavailable, upstream_error, bad_input) when the tool could not answer.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"422":{"description":"Arguments failed validation","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded (see Retry-After)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"x-read-only":true}},"/v1/tools/minutes_checklist":{"post":{"operationId":"minutes_checklist","summary":"A hand-curated checklist of what should and shouldn't be captured in meeting minutes, with the reasoning","description":"A hand-curated checklist of what should and shouldn't be captured in meeting minutes, with the reasoning\n    for each. Use for \"what should and shouldn't go in meeting minutes\", \"am I writing minutes wrong\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"capture":{"anyOf":[{"type":"boolean"},{"type":"null"}],"default":null,"description":"true for what to capture, false for what to leave out, omit for both.","title":"Capture"}},"title":"minutes_checklistArguments","type":"object"}}}},"responses":{"200":{"description":"Tool result. `ok: true` on success; `ok: false` with a structured `error` (provider_unavailable, upstream_error, bad_input) when the tool could not answer.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"422":{"description":"Arguments failed validation","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded (see Retry-After)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"x-read-only":true}},"/v1/tools/minutes_style_guide":{"post":{"operationId":"minutes_style_guide","summary":"Compares verbatim, summary, and action-only minutes styles — what each captures, pros/cons, and when to","description":"Compares verbatim, summary, and action-only minutes styles — what each captures, pros/cons, and when to\n    use it. Use for \"should our minutes be a summary or just action items\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"style":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"description":"verbatim | summary | action-only; omit to compare all three.","title":"Style"}},"title":"minutes_style_guideArguments","type":"object"}}}},"responses":{"200":{"description":"Tool result. `ok: true` on success; `ok: false` with a structured `error` (provider_unavailable, upstream_error, bad_input) when the tool could not answer.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"422":{"description":"Arguments failed validation","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded (see Retry-After)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"x-read-only":true}},"/v1/tools/meeting_type_template":{"post":{"operationId":"meeting_type_template","summary":"The expected section structure, cadence, and attendee-recording guidance for a meeting type. Use for","description":"The expected section structure, cadence, and attendee-recording guidance for a meeting type. Use for\n    \"what sections should board meeting minutes have\", \"how should I structure standup notes\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"meeting_type":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"description":"general | standup | board_meeting | project_kickoff | retrospective | one_on_one; omit to list all.","title":"Meeting Type"}},"title":"meeting_type_templateArguments","type":"object"}}}},"responses":{"200":{"description":"Tool result. `ok: true` on success; `ok: false` with a structured `error` (provider_unavailable, upstream_error, bad_input) when the tool could not answer.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"422":{"description":"Arguments failed validation","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded (see Retry-After)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"x-read-only":true}},"/v1/tools/distribution_note":{"post":{"operationId":"distribution_note","summary":"Drafts a short blurb for circulating minutes — a one-paragraph summary of key decisions and who owns","description":"Drafts a short blurb for circulating minutes — a one-paragraph summary of key decisions and who owns\n    what, suitable for an email or chat message. Use for \"write a short note to send with these minutes\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"topic":{"description":"Meeting title/topic.","minLength":1,"title":"Topic","type":"string"},"meeting_date":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"description":"Date of the meeting.","title":"Meeting Date"},"decisions":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"default":null,"description":"Decisions made.","title":"Decisions"},"action_items":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"default":null,"description":"Free-text action items.","title":"Action Items"}},"required":["topic"],"title":"distribution_noteArguments","type":"object"}}}},"responses":{"200":{"description":"Tool result. `ok: true` on success; `ok: false` with a structured `error` (provider_unavailable, upstream_error, bad_input) when the tool could not answer.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"422":{"description":"Arguments failed validation","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded (see Retry-After)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"x-read-only":true}},"/v1/tools/next_steps_summary":{"post":{"operationId":"next_steps_summary","summary":"Sorts action items by due date (soonest first), flags overdue ones, and separates anything whose due","description":"Sorts action items by due date (soonest first), flags overdue ones, and separates anything whose due\n    date couldn't be resolved to a calendar date. Use for \"what's overdue from last meeting's action items\",\n    \"sort these action items by deadline\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"action_items":{"description":"Free-text action items.","items":{"type":"string"},"minItems":1,"title":"Action Items","type":"array"},"as_of_date":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"description":"Date to measure overdue against (default: today), YYYY-MM-DD.","title":"As Of Date"}},"required":["action_items"],"title":"next_steps_summaryArguments","type":"object"}}}},"responses":{"200":{"description":"Tool result. `ok: true` on success; `ok: false` with a structured `error` (provider_unavailable, upstream_error, bad_input) when the tool could not answer.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"422":{"description":"Arguments failed validation","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded (see Retry-After)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"x-read-only":true}},"/v1/tools/sensitive_content_flag":{"post":{"operationId":"sensitive_content_flag","summary":"Keyword-heuristic scan flagging personnel/HR, legal, confidential-financial, or security-sensitive","description":"Keyword-heuristic scan flagging personnel/HR, legal, confidential-financial, or security-sensitive\n    content that's usually better kept out of broadly-circulated minutes — a prompt for human review, not\n    automatic redaction. Use for \"does this draft mention anything I should cut before circulating it\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"text":{"description":"Drafted minutes text to scan.","minLength":1,"title":"Text","type":"string"}},"required":["text"],"title":"sensitive_content_flagArguments","type":"object"}}}},"responses":{"200":{"description":"Tool result. `ok: true` on success; `ok: false` with a structured `error` (provider_unavailable, upstream_error, bad_input) when the tool could not answer.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"422":{"description":"Arguments failed validation","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded (see Retry-After)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"x-read-only":true}}}}