Skip to Content
IntegratorsMCP Service

MCP Service

The GetFTR MCP Service provides an MCP interface for the GetFTR Entitlements API. It is designed for AI agents and MCP-compatible clients that need to retrieve entitlement decisions for scholarly content.

What is MCP?

Model Context Protocol (MCP) is a standard way for AI applications to discover and call external tools using structured input and output.

In practice:

  • A client connects to an MCP endpoint
  • The client lists available tools
  • The client calls a tool with JSON arguments
  • The service returns a structured result or error

Why use the MCP Service?

If your application already uses AI agents, the MCP Service gives you a direct and standardized way to call GetFTR entitlement checks without building your own agent-specific wrapper around the REST API.

If you are not using agents, the regular Entitlements API integration in this documentation set is still the recommended path.

Endpoint and Authentication

The MCP Service endpoint is:

https://mcp.prod.getft.io/mcp

Health check endpoint:

https://mcp.prod.getft.io/health

Authentication uses bearer token format:

Authorization: Bearer <GETFTR_API_KEY>
⚠️

The bearer token is your GetFTR API key. Keep it server-side and never expose it in browser code.

Quick Client Configuration

Example MCP client configuration:

{ "mcpServers": { "getftr": { "type": "streamable-http", "url": "https://mcp.prod.getft.io/mcp", "headers": { "Authorization": "Bearer <GETFTR_API_KEY>" } } } }

Typical client call sequence:

  1. initialize
  2. tools/list
  3. tools/call

Available Tools

Tool nameStatusPurpose
get_entitlementsAvailableGet real-time entitlement results for a DOI batch
get_centralised_entitlementsAvailableGet fast, centralised entitlement results for a DOI batch

Tool: get_entitlements

Returns entitlement results for one or more DOI strings and optional organisation context.

Request Schema

The tool arguments object:

PropertyTypeRequiredDescription
doisstring[]1-20 DOI strings. Each DOI must start with 10
orgobjectOptional organisation context
org.ipv4stringEnd-user IPv4 address
org.entityIDstringOrganisation SAML entityID

Example arguments:

{ "dois": ["10.1000/xyz", "10.1038/s41586-024-12345-6"], "org": { "ipv4": "203.0.113.10", "entityID": "https://idp.example.edu/idp" } }
ℹ️

This MCP service currently accepts DOI strings only. The wider Entitlements API supports richer DOI object requests (see the Integrators Request page), but that shape is not enabled in this MCP input schema yet.

Response Schema

The tool returns an MCP result with:

  • result.isError - boolean
  • result.structuredContent - typed entitlement payload on success
  • result.content - text content (stringified JSON)

structuredContent shape:

PropertyTypeDescription
entitlementsEntitlementItem[]Up to 20 entitlement items

EntitlementItem fields:

PropertyTypeRequiredDescription
doistringDOI resolved by GetFTR
statusCodenumberEntitlement status for this DOI
uidstringOptional request correlation identifier
entitledstringEntitlement decision (yes, no, etc.)
accessTypestringAccess type (paid, open, etc.)
sourcestringGetFTR entitlement source
orgobjectOrg identifiers used by upstream checks
vorDocument[]Version of Record links
avDocument[]Alternative Version links
documentstringLanding page URL
updatesUpdate[]Retraction and update data
licensesLicense[]Document license data
metadataMetadataBibliographic metadata

Nested object shapes:

  • Document: { contentType?: string, url: string }
  • Update: { source: string, updateType: string, updateDoi: string, updateDate: string, reasons?: string[], urls?: string[] }
  • License: { type?: string, url?: string, startDate?: string }
  • Metadata: { title?: string, journal?: string, published?: string, authors?: string[] }

Example success result:

{ "jsonrpc": "2.0", "id": "call-1", "result": { "isError": false, "structuredContent": { "entitlements": [ { "doi": "10.1000/xyz", "statusCode": 200, "entitled": "yes", "accessType": "paid" } ] } } }

Error Handling

ScenarioBehavior
Missing bearer token on /mcpHTTP 401
Upstream entitlement API returns 401isError: true with message Invalid GetFTR API key provided.
Upstream entitlement API returns 400isError: true with message GetFTR API request was invalid.
Other upstream non-2xx statusisError: true with message GetFTR API request failed with status <code>.

Tool: get_centralised_entitlements

Get fast, centralised entitlement results for a DOI batch. This tool provides DOI-level entitlements against Journal ISSN entitlements for institutional subscriptions.

Integration Notes

  • Keep DOI batches at 20 or fewer per call.
  • Prefer structuredContent for parsing logic.
  • Treat isError: true as a normal runtime branch and handle gracefully.
  • The service forwards your request to the configured GetFTR Entitlements API URL.
Last updated on