> **Building with AI coding agents?** Install the authstack plugin with one command. This equips your agent with accurate Scalekit implementation patterns.
>
> **Recommended** (the `-y` flags skip prompts, so the command runs without an interactive terminal):
> ```bash
> npx -y @scalekit-inc/cli setup -y
> ```
>
> Global:
> ```bash
> npm install -g @scalekit-inc/cli
> scalekit setup -y
> ```
>
> Supports Claude Code, Cursor, GitHub Copilot, Codex + skills for other Agent Skills-compatible agents in `~/.agents/skills`.
> Skills: integrate-agentkit, implement-saaskit, add-mcp-oauth, implement-sso, implement-scim.
> [Full setup guide](https://docs.scalekit.com/dev-kit/build-with-ai/)

---

# Connect AI agents to the Scholar Gateway MCP server

The Scholar Gateway MCP connector routes your AI agent's tool calls to Scholar Gateway's own MCP server through Scalekit. Each user signs in to Scholar Gateway once, and Scalekit stores and refreshes their tokens, so your agent never handles credentials. It comes with 1 tool.

**Authentication:** OAuth2.1/DCR
**Categories:** AI, Search
**Tools:** 1: 1 read, 0 write, 0 destructive
**Users sign in with:** OAuth
**OAuth app:** Scalekit's or your own
**Built by:** Vendor MCP
**Try it:** [Playground in the Scalekit dashboard](https://app.scalekit.com/ws/signup?sk_intent=playground&provider=SCHOLARGATEWAY)

## What you can do

- **Search academic literature**: find relevant passages in full-text academic publications with citation details, filtered by publication year

## Setup

1. ### Install the SDK

   **Node.js**

   ```bash
   npm install @scalekit-sdk/node dotenv
   ```

   **Python**

   ```bash
   pip install scalekit-sdk-python python-dotenv
   ```

2. ### Set your credentials

   Add your Scalekit credentials to your `.env` file. Find values in **[app.scalekit.com](https://app.scalekit.com)** > **Developers** > **API Credentials**.

   ```sh title=".env"
   SCALEKIT_ENVIRONMENT_URL=<your-environment-url>
   SCALEKIT_CLIENT_ID=<your-client-id>
   SCALEKIT_CLIENT_SECRET=<your-client-secret>
   ```

3. ### Create the Scholar Gateway MCP connection

   In **AgentKit > Connections**, create a Scholar Gateway MCP connection. The name you give it is the `connection_name` your code passes. See [Configure connections](/agentkit/connections/).

   Scalekit credentials are available for Scholar Gateway MCP server, so you don't need to register an OAuth app.

4. ### Authorize a user and make your first call

   **Node.js** (`quickstart.mts`)

   ```typescript
   import { ScalekitClient } from '@scalekit-sdk/node'
   import 'dotenv/config'
   import { createInterface } from 'node:readline/promises'

   const scalekit = new ScalekitClient(
     process.env.SCALEKIT_ENVIRONMENT_URL,
     process.env.SCALEKIT_CLIENT_ID,
     process.env.SCALEKIT_CLIENT_SECRET,
   )
   const actions = scalekit.actions

   const connector = 'scholargateway'
   const identifier = 'user_123'

   // Generate an authorization link for the user
   const { link } = await actions.getAuthorizationLink({ connectionName: connector, identifier })
   console.log('Authorize Scholar Gateway MCP:', link)
   const rl = createInterface({ input: process.stdin, output: process.stdout })
   await rl.question('Press Enter after authorizing...')
   rl.close()

   // Make your first call
   const result = await actions.executeTool({
     connector,
     identifier,
     toolName: 'scholargateway_semanticSearch',
     toolInput: { query: 'YOUR_QUERY' },
   })
   console.log(result)
   ```

   ```bash
   npx tsx quickstart.mts
   ```

   **Python** (`quickstart.py`)

   ```python
   import os
   from scalekit import ScalekitClient
   from dotenv import load_dotenv
   load_dotenv()

   scalekit_client = ScalekitClient(
       env_url=os.getenv("SCALEKIT_ENVIRONMENT_URL"),
       client_id=os.getenv("SCALEKIT_CLIENT_ID"),
       client_secret=os.getenv("SCALEKIT_CLIENT_SECRET"),
   )
   actions = scalekit_client.actions

   connection_name = "scholargateway"
   identifier = "user_123"

   # Generate an authorization link for the user
   link_response = actions.get_authorization_link(
       connection_name=connection_name,
       identifier=identifier,
   )
   print("Authorize Scholar Gateway MCP:", link_response.link)
   input("Press Enter after authorizing...")

   # Make your first call
   result = actions.execute_tool(
       tool_input={"query":"YOUR_QUERY"},
       tool_name="scholargateway_semanticSearch",
       connection_name=connection_name,
       identifier=identifier,
   )
   print(result)
   ```

   ```bash
   python quickstart.py
   ```

   Each user signs in once. See [Authorize a user](/agentkit/tools/authorize/) for the full flow and statuses.

## Tools

Pass the exact name to `execute_tool`, with an input like each tool's example. To ask for a tool that's missing, use the [request form](https://scalekitsupport.portal.usepylon.com/forms/request-a-connector-tool).

**Node.js**

```typescript
const result = await actions.executeTool({
  toolName: 'scholargateway_semanticSearch',
  toolInput: {
    query: '<query>',
  },
  connector: 'scholargateway',
  identifier: 'user_123',
})
```

**Python**

```python
result = actions.execute_tool(
    tool_name="scholargateway_semanticSearch",
    tool_input={
        "query": "<query>",
    },
    connection_name="scholargateway",
    identifier="user_123",
)
```

`result.data` is the app's response as JSON, and `result.execution_id` (`executionId` in Node.js) is the ID of the call.

### `scholargateway_semanticSearch`

Semantic Search · Read-only

Searches a full-text academic corpus and returns relevant passages with citation metadata.

When to use: Use this tool for research questions, factual claims, literature-backed explanations, evidence-based summaries, and any response where academic support would improve accuracy, credibility, or depth. Submit queries as complete natural language questions — preserve the full intent and do not reduce to keywords. For ambiguous or polysemous terms, expand to full context before searching (e.g. use 'multiple sclerosis' not 'MS'). Cite all substantive claims inline using author-year format with DOI hyperlinks.

When NOT to use: Do not use for general web searches, non-academic topics, or when the question requires real-time or proprietary data not covered by the academic corpus.

Read only: yes. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `query` (`string`, required): Natural language research question. Preserve intent, scope, and structure. Rewrite for semantic clarity but do not compress to keywords. Expand acronyms and add field context for ambiguous or polysemous terms.
- `end_year` (`string`, optional): Inclusive upper bound for publication year filter. Omit to include publications up to the present.
- `includeRetractedContent` (`boolean`, optional): Whether to include retracted publications in results. Default false; set true only when retraction history is itself the subject of inquiry. Default: `false`.
- `start_year` (`string`, optional): Inclusive lower bound for publication year filter. Omit to search across all available years.
- `topN` (`integer`, optional): Number of passages to return. Higher values improve recall for broad or multi-faceted queries; lower values are appropriate for narrow or well-defined topics. Default: `15`.

Example input: `{"query":"<query>"}`

## Related

Other AI connectors ([all 116](/agentkit/connectors/?category=ai)):

- [Chorus](/agentkit/connectors/chorus/): Scalekit connector, Username and password, 9 tools
- [Gong](/agentkit/connectors/gong/): Scalekit connector, OAuth, 49 tools
- [Jiminny](/agentkit/connectors/jiminny/): Scalekit connector, Access token, 27 tools


---

## More Scalekit documentation

| Resource | What it contains | When to use it |
|----------|-----------------|----------------|
| [/llms.txt](/llms.txt) | Structured index with routing hints per product area | Start here — find which documentation set covers your topic before loading full content |
| [/llms-full.txt](/llms-full.txt) | Complete documentation for all Scalekit products in one file | Use when you need exhaustive context across multiple products or when the topic spans several areas |
| [sitemap-0.xml](https://docs.scalekit.com/sitemap-0.xml) | Full URL list of every documentation page | Use to discover specific page URLs you can fetch for targeted, page-level answers |
