{"openapi":"3.1.0","info":{"title":"GrantWriting API","version":"0.1.0","description":"A fully local grant-proposal-structure toolkit for nonprofits: the standard six-section proposal structure, the real SMART-goal framework with a heuristic checker, a logic-model explainer with a worked example, and a common-grant-rejection-reasons reference.\n\nEvery operation is read-only or compute-only. The same tools are available over MCP (streamable HTTP) at https://grantwriting.connectorbay.com/mcp.","contact":{"name":"Unify Dynamics LLC","email":"hr@unifydynamics.com","url":"https://connectorbay.com/grantwriting/docs"},"termsOfService":"https://connectorbay.com/grantwriting/terms"},"servers":[{"url":"https://grantwriting.connectorbay.com"}],"externalDocs":{"url":"https://connectorbay.com/grantwriting/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/grant_proposal_structure":{"post":{"operationId":"grant_proposal_structure","summary":"The standard six-section nonprofit grant-proposal structure in order -- needs statement, goals and","description":"The standard six-section nonprofit grant-proposal structure in order -- needs statement, goals and\n    objectives, methodology, evaluation plan, budget narrative, sustainability plan -- each with its purpose\n    and what to include. Use for \"what sections does a grant proposal need\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{},"title":"grant_proposal_structureArguments","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/smart_goal_framework":{"post":{"operationId":"smart_goal_framework","summary":"Explains the SMART goal framework (Specific, Measurable, Achievable, Relevant, Time-bound) used for","description":"Explains the SMART goal framework (Specific, Measurable, Achievable, Relevant, Time-bound) used for\n    grant-proposal objectives, with a passing and a failing example. Use for \"explain the SMART goal framework\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{},"title":"smart_goal_frameworkArguments","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/smart_goal_checker":{"post":{"operationId":"smart_goal_checker","summary":"Evaluates a goal statement against all five SMART criteria using heuristic text analysis (an actual","description":"Evaluates a goal statement against all five SMART criteria using heuristic text analysis (an actual\n    number for Measurable, an actual deadline for Time-bound, a named program metric or population for\n    Specific/Relevant, no absolute/impossible language for Achievable) and returns a pass/fail per criterion\n    plus an overall verdict. Use for \"check if this is a SMART goal: increase program completion from 60% to\n    75% by December 2026\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"goal_text":{"description":"A goal or objective statement to evaluate against the SMART criteria.","minLength":1,"title":"Goal Text","type":"string"}},"required":["goal_text"],"title":"smart_goal_checkerArguments","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/logic_model_explainer":{"post":{"operationId":"logic_model_explainer","summary":"Explains the inputs -> activities -> outputs -> outcomes -> impact logic-model chain, with a full","description":"Explains the inputs -> activities -> outputs -> outcomes -> impact logic-model chain, with a full\n    worked example (an after-school tutoring program) and the key outputs-vs-outcomes distinction. Use for\n    \"explain a logic model with an example\", \"what's the difference between outputs and outcomes\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{},"title":"logic_model_explainerArguments","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/common_rejection_reasons":{"post":{"operationId":"common_rejection_reasons","summary":"A hand-curated reference of common reasons grant proposals get rejected, by proposal section, each","description":"A hand-curated reference of common reasons grant proposals get rejected, by proposal section, each\n    with a fix. Use for \"why do grant proposals get rejected\", \"common grant budget mistakes\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"category":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"description":"needs_statement | goals_and_objectives | methodology | evaluation | budget | sustainability | fit_and_compliance. Omit for all.","title":"Category"}},"title":"common_rejection_reasonsArguments","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/grantwriting_glossary":{"post":{"operationId":"grantwriting_glossary","summary":"Definitions of grant-writing terms: logic model, theory of change, letter of inquiry, matching funds,","description":"Definitions of grant-writing terms: logic model, theory of change, letter of inquiry, matching funds,\n    indirect costs, restricted vs. unrestricted funding. Use for \"what's a letter of inquiry\", \"what are\n    indirect costs\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"term":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"description":"A specific term to look up; omit to list all.","title":"Term"}},"title":"grantwriting_glossaryArguments","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}}}}