POEMS Developer docs

POEMS MCP Server

Let an authorized AI client read the portfolio of the POEMS account you connect, over the Model Context Protocol (MCP).

Overview

POEMS provides a hosted Model Context Protocol (MCP) service that lets an authorized AI client read portfolio information for the POEMS account you connect. In Claude, POEMS is available as a connector in the Connectors Directory; other MCP clients connect with the server URL. The service is read-only and does not place trades.

Your AI client signs in through POEMS sign-in and gets tokens, then calls the POEMS MCP server, which calls the read-only POEMS portfolio API. Sign in, get tokens Tool calls + access token API calls Reads Your AI client POEMS sign-in in your browser POEMS MCP server ai.poems.com.sg/mcp POEMS portfolio API read-only Your POEMS account Your AI client signs in through POEMS sign-in and gets tokens, then calls the POEMS MCP server, which calls the read-only POEMS portfolio API. Sign in, get tokens Tool calls + access token API calls Reads POEMS sign-in in your browser Your AI client POEMS MCP server ai.poems.com.sg/mcp POEMS portfolio API read-only Your POEMS account

Server URL and quick start

https://ai.poems.com.sg/mcp

Using Claude? You don't need this URL: connect POEMS from the Connectors Directory as described in Client setup.

For other clients: the server uses Streamable HTTP. Add this URL to an MCP client that supports remote HTTP servers and OAuth, then complete the sign-in and consent flow below.

Client setup

Claude

POEMS is listed in Claude's Connectors Directory. Connect it from Claude on the web or Claude Desktop:

  1. In Claude, go to Customize > Connectors and select + next to Connectors to browse the directory.
  2. Search for POEMS and open it.
  3. Select Connect and complete the POEMS sign-in in the window that opens.

Once connected, Claude can use the POEMS tools in your chats. To turn POEMS on or off for a chat, select + in the chat box, go to Connectors and use its toggle. A connection made on the web or Claude Desktop is also available in the Claude mobile apps.

Authorization flow

The client requests access using OAuth 2.1 with PKCE and the portfolio scope. Clients like Claude handle every step except signing in and approving access.

Authorization flow between you, your AI client, POEMS sign-in and the POEMS MCP server, in eleven numbered steps. You Your AI client POEMS sign-in POEMS MCP server 1 Connect, no token yet 2 Where to sign in 3 Register the client 4 Open POEMS sign-in 5 Sign in, 2FA, T&C, approve 6 Authorization code 7 Code + PKCE verifier 8 Access + refresh tokens 9 Tool call + access token 10 Portfolio data 11 Refresh before expiry Authorization flow between you, your AI client, POEMS sign-in and the POEMS MCP server, in eleven numbered steps. You Your AI client POEMS sign-in POEMS MCP server 1 Connect, no token yet 2 Where to sign in 3 Register the client 4 Open POEMS sign-in 5 Sign in, 2FA, T&C, approve 6 Authorization code 7 Code + PKCE verifier 8 Access + refresh tokens 9 Tool call + access token 10 Portfolio data 11 Refresh before expiry

The service publishes OAuth metadata:

MetadataURL
Protected resourcehttps://ai.poems.com.sg/.well-known/oauth-protected-resource/mcp
Authorization serverhttps://ai.poems.com.sg/.well-known/oauth-authorization-server

Tools

ToolDescriptionParameters
get_holdings Read the account's Cash-paid securities positions and its unit trusts. None
get_account_details Read cash balances, margin and buying-power figures. None
get_realized_pl_periods List the months available for realized profit/loss queries. Call this first to choose valid dates. None
get_realized_pl Read realized profit/loss for one month or an inclusive range of months. from (required) and to (optional), both MM/yyyy. Use months returned by get_realized_pl_periods.

A realized-P/L range is limited to the periods available for the account and the server's maximum range. Each month in the range counts as one call against your account's request limits.

Example prompts

  • What's my portfolio worth?
  • Show my cash balances and buying power.
  • Which stocks and unit trusts do I hold?
  • What realized P/L periods can I query?
  • Show my realized P/L for January through March 2026.

Sessions and disconnecting

Access tokens expire after 2 minutes and refresh tokens after 2 days; your client refreshes the access token for you. Active refresh tokens rotate when used. Revoking or replacing the associated POEMS session prevents future token refresh; an already issued access token remains usable until it expires.

To disconnect in Claude, go to Customize > Connectors, select POEMS and disconnect it. In other clients, use the client's disconnect/remove action for the POEMS server. The client should revoke its authorization when supported. If the refresh token is expired, revoked, or no longer linked to the active POEMS session, reconnect through POEMS sign-in.

Errors and troubleshooting

HTTP status or errorMeaning and suggested action
401The access token is missing, malformed, or expired. Sign in again or allow the client to refresh it.
403The token does not have the required portfolio scope. Reconnect and approve the requested access.
429 rate_limit_exceededThe rolling per-minute limit was reached. Wait before retrying.
429 daily_limit_exceededThe daily per-account limit was reached.
503 rate_limit_unavailableThe request guard is unavailable. Retry later.
503 mcp_disabledMCP resource access is temporarily disabled. Retry later.
invalid_grantThe refresh token is no longer valid or the POEMS session binding changed. Reconnect through sign-in.

Security and privacy

See POEMS Privacy & Security.