{"openapi":"3.1.0","info":{"title":"GlobalGiving (BYOK) API","version":"0.1.0","description":"GlobalGiving (BYOK) lets an AI assistant read your own GlobalGiving data through the GlobalGiving API with a key you supply (GlobalGiving API key). Read-only: 11 tools (search_projects, list_projects_summary, list_featured_projects, get_project_summary, list_projects_by_theme, list_projects_by_country, list_projects_by_organization, get_organization, list_themes, list_regions,...\n\nEvery operation is read-only or compute-only. The same tools are available over MCP (streamable HTTP) at https://byok-globalgiving.connectorbay.com/mcp.","contact":{"name":"Unify Dynamics LLC","email":"agent@connectorbay.com","url":"https://connectorbay.com/byok-globalgiving/docs"},"termsOfService":"https://connectorbay.com/byok-globalgiving/terms"},"servers":[{"url":"https://byok-globalgiving.connectorbay.com"}],"externalDocs":{"url":"https://connectorbay.com/byok-globalgiving/docs"},"security":[{"upstreamKey":[]}],"components":{"securitySchemes":{"bearer":{"type":"http","scheme":"bearer","description":"Optional. A Pro API key raises rate limits; no credentials are required."},"upstreamKey":{"type":"apiKey","in":"header","name":"X-Upstream-Key","description":"Your own key for the service this connector wraps (bring your own key). Used for that one call only; never stored, logged or cached."}},"schemas":{"Error":{"type":"object","properties":{"ok":{"const":false},"error":{"type":"object"}}}}},"paths":{"/v1/tools/search_projects":{"post":{"operationId":"search_projects","summary":"Search active GlobalGiving projects by keyword, optionally filtered by theme and country; 10 results per call, page with","description":"Search active GlobalGiving projects by keyword, optionally filtered by theme and country; 10 results per call, page with start. Returns project summaries. Use for \"Find GlobalGiving projects about flood relief in Pakistan\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"q":{"description":"Search words; use * to match every project (then narrow with filter).","maxLength":200,"title":"Q","type":"string"},"start":{"anyOf":[{"maximum":100000,"minimum":0,"type":"integer"},{"type":"null"}],"default":0,"description":"Position of the first result, 0-based; add 10 for each next page.","title":"Start"},"filter":{"anyOf":[{"maxLength":100,"type":"string"},{"type":"null"}],"default":null,"description":"Optional filters as key:value pairs separated by commas, for example 'theme:disaster,country:PK'.","title":"Filter"}},"required":["q"],"title":"search_projectsArguments","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/list_projects_summary":{"post":{"operationId":"list_projects_summary","summary":"List summaries of all GlobalGiving projects, 10 per call; the answer carries hasNext and nextProjectId for the next page","description":"List summaries of all GlobalGiving projects, 10 per call; the answer carries hasNext and nextProjectId for the next page. Use for \"List GlobalGiving projects\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"next_project_id":{"anyOf":[{"minimum":1,"type":"integer"},{"type":"null"}],"default":null,"description":"Id returned as nextProjectId by the previous call; pass it to get the next 10 projects. Leave out for the first page.","title":"Next Project Id"}},"title":"list_projects_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/list_featured_projects":{"post":{"operationId":"list_featured_projects","summary":"List the 10 featured active GlobalGiving projects (rotated hourly) as summaries. Use for \"Which GlobalGiving projects ar","description":"List the 10 featured active GlobalGiving projects (rotated hourly) as summaries. Use for \"Which GlobalGiving projects are featured right now\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{},"title":"list_featured_projectsArguments","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/get_project_summary":{"post":{"operationId":"get_project_summary","summary":"Get the summary of one GlobalGiving project: title, status, country, themes, donation options and the organization behin","description":"Get the summary of one GlobalGiving project: title, status, country, themes, donation options and the organization behind it. Use for \"Show GlobalGiving project 1883\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"project_id":{"description":"Numeric GlobalGiving project id, for example 1883.","minimum":1,"title":"Project Id","type":"integer"}},"required":["project_id"],"title":"get_project_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/list_projects_by_theme":{"post":{"operationId":"list_projects_by_theme","summary":"List project summaries for one GlobalGiving theme such as edu or health (ids come from list_themes), 10 per call. Use fo","description":"List project summaries for one GlobalGiving theme such as edu or health (ids come from list_themes), 10 per call. Use for \"Which GlobalGiving education projects exist\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"theme_id":{"description":"Theme id from list_themes, for example 'edu'.","maxLength":40,"title":"Theme Id","type":"string"},"next_project_id":{"anyOf":[{"minimum":1,"type":"integer"},{"type":"null"}],"default":null,"description":"Id returned as nextProjectId by the previous call; pass it to get the next 10 projects. Leave out for the first page.","title":"Next Project Id"}},"required":["theme_id"],"title":"list_projects_by_themeArguments","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/list_projects_by_country":{"post":{"operationId":"list_projects_by_country","summary":"List project summaries for one country by its two-letter ISO 3166 code, 10 per call. Use for \"Which GlobalGiving project","description":"List project summaries for one country by its two-letter ISO 3166 code, 10 per call. Use for \"Which GlobalGiving projects are in India\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"country_code":{"description":"Two-letter ISO 3166 country code, for example 'IN'.","maxLength":3,"title":"Country Code","type":"string"},"next_project_id":{"anyOf":[{"minimum":1,"type":"integer"},{"type":"null"}],"default":null,"description":"Id returned as nextProjectId by the previous call; pass it to get the next 10 projects. Leave out for the first page.","title":"Next Project Id"}},"required":["country_code"],"title":"list_projects_by_countryArguments","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/list_projects_by_organization":{"post":{"operationId":"list_projects_by_organization","summary":"List project summaries run by one nonprofit organization (id from a project's organization), 10 per call. Use for \"Which","description":"List project summaries run by one nonprofit organization (id from a project's organization), 10 per call. Use for \"Which projects does GlobalGiving organization 189 run\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"organization_id":{"description":"Numeric GlobalGiving organization id, for example 189.","minimum":1,"title":"Organization Id","type":"integer"},"next_project_id":{"anyOf":[{"minimum":1,"type":"integer"},{"type":"null"}],"default":null,"description":"Id returned as nextProjectId by the previous call; pass it to get the next 10 projects. Leave out for the first page.","title":"Next Project Id"}},"required":["organization_id"],"title":"list_projects_by_organizationArguments","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/get_organization":{"post":{"operationId":"get_organization","summary":"Get one nonprofit organization listed on GlobalGiving: name, mission, location, EIN, website, themes and project counts.","description":"Get one nonprofit organization listed on GlobalGiving: name, mission, location, EIN, website, themes and project counts. Use for \"Tell me about GlobalGiving organization 456\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"organization_id":{"description":"Numeric GlobalGiving organization id, for example 456.","minimum":1,"title":"Organization Id","type":"integer"}},"required":["organization_id"],"title":"get_organizationArguments","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/list_themes":{"post":{"operationId":"list_themes","summary":"List all GlobalGiving themes (id and name) to use as filters. Use for \"What themes does GlobalGiving use to group projec","description":"List all GlobalGiving themes (id and name) to use as filters. Use for \"What themes does GlobalGiving use to group projects\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{},"title":"list_themesArguments","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/list_regions":{"post":{"operationId":"list_regions","summary":"List the world regions GlobalGiving groups its projects into. Use for \"Which world regions does GlobalGiving cover\".","description":"List the world regions GlobalGiving groups its projects into. Use for \"Which world regions does GlobalGiving cover\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{},"title":"list_regionsArguments","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/get_project_counts_by_country":{"post":{"operationId":"get_project_counts_by_country","summary":"Show how many projects GlobalGiving has per country, grouped by region. Use for \"How many GlobalGiving projects are ther","description":"Show how many projects GlobalGiving has per country, grouped by region. Use for \"How many GlobalGiving projects are there in each country\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{},"title":"get_project_counts_by_countryArguments","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}}}}