search_institutions
Find academic and research institutions using OpenAlex's comprehensive database. Search by name, filter by country, type, or other attributes to identify relevant organizations.
Instructions
Search institutions
Input Schema
TableJSON Schema
| Name | Required | Description | Default |
|---|---|---|---|
| search | No | Full-text search query | |
| filter | No | Key:value OpenAlex filters. Supports entity attributes (e.g., 'ror', 'country_code', 'type'), IDs, and convenience filters (e.g., 'display_name.search'). Example: 'country_code:US,type:education' | |
| sort | No | Sort field with optional :desc | |
| page | No | Page number | |
| per_page | No | Results per page (max 200) | |
| cursor | No | Cursor for deep pagination | |
| group_by | No | Group results by field | |
| select | No | Fields to return | |
| sample | No | Random sample size | |
| seed | No | Random seed | |
| mailto | No | Email for rate limits | |
| api_key | No | Premium API key |
Implementation Reference
- src/tools/searchInstitutions.ts:3-10 (handler)The handler function that executes the core logic of the 'search_institutions' tool by calling the OpenAlex API for institutions.export async function searchInstitutions(args: any) { return { content: [{ type: "text", text: JSON.stringify(await makeOpenAlexRequest("/institutions", args), null, 2) }] }; }
- src/index.ts:121-140 (schema)The schema definition including input schema, description, and name for the 'search_institutions' tool, provided in the listTools handler.name: "search_institutions", description: "Search institutions", inputSchema: { type: "object", properties: { search: { type: "string", description: "Full-text search query" }, filter: { type: "string", description: "Key:value OpenAlex filters. Supports entity attributes (e.g., 'ror', 'country_code', 'type'), IDs, and convenience filters (e.g., 'display_name.search'). Example: 'country_code:US,type:education'" }, sort: { type: "string", description: "Sort field with optional :desc" }, page: { type: "number", description: "Page number" }, per_page: { type: "number", description: "Results per page (max 200)" }, cursor: { type: "string", description: "Cursor for deep pagination" }, group_by: { type: "string", description: "Group results by field" }, select: { type: "string", description: "Fields to return" }, sample: { type: "number", description: "Random sample size" }, seed: { type: "number", description: "Random seed" }, mailto: { type: "string", description: "Email for rate limits" }, api_key: { type: "string", description: "Premium API key" } } } },
- src/index.ts:287-288 (registration)The registration in the CallToolRequestHandler switch statement that dispatches to the searchInstitutions handler.case "search_institutions": return await searchInstitutions(args);
- src/index.ts:25-25 (registration)The import statement registering the searchInstitutions handler function.import { searchInstitutions } from "./tools/searchInstitutions.js";