Sellopia

MCP Server

Connect your AI assistant to Sellopia's dated, sourced market data.

Sellopia MCP Server documentation

Last updated: 26 October 2026

Overview

The Sellopia MCP server gives your AI assistant access to dated, sourced market data for your organisation's region and inputs: prices, indices, their direction and ECB exchange rates, plus fixed calculations on it (no AI model), such as period averages, price bands, index price clauses and materials lists.

It works with AI clients that support remote MCP servers, such as Claude, ChatGPT, Microsoft 365 Copilot and Gemini. Every tool is read-only: the server can read market data but cannot create, change or delete anything in your Sellopia account.

Anyone can connect: sign in with Google or Microsoft and you start on the Free plan, 100 tool calls a month (one tool call is one question your AI asks Sellopia). If your company has a Sellopia account, ask to be added to it for your team's allowance, or contact info@sellopia.ai.

Connect

Server URL:

https://mcp.sellopia.ai

Claude

  1. In Claude, open Settings → Connectors and choose Add custom connector.
  2. Enter a name, such as Sellopia, and the server URL https://mcp.sellopia.ai.
  3. Connect it. You are sent to Sellopia to sign in with your Sellopia account.
  4. Review the access request and approve it. You are returned to Claude, and the Sellopia tools become available in your conversations.

On team and enterprise plans, an owner or admin may need to add the connector for the organisation first.

ChatGPT

  1. Add Sellopia as a custom connector (an MCP server) in ChatGPT, following ChatGPT's instructions for your plan, and use the server URL https://mcp.sellopia.ai.
  2. When asked, sign in with your Sellopia account and approve the access request.
  3. Enable the Sellopia connector in the conversation where you want to use it.

Whether custom connectors are available, and who can add them, depends on your ChatGPT plan and workspace settings.

Microsoft 365 Copilot

  1. In Copilot Studio, open the agent that should use Sellopia, then Tools → Add a tool → New tool → Model Context Protocol.
  2. Enter a name, such as Sellopia, a one-line description, and the server URL https://mcp.sellopia.ai. Choose OAuth 2.0 with Dynamic discovery, then Create.
  3. Create a new connection, sign in with your Sellopia account, and choose Add to agent.
  4. Publish the agent to Microsoft 365 Copilot and Teams. Each colleague signs in to Sellopia the first time the agent uses it.

The agent needs generative orchestration turned on. Your organisation's data policies for Power Platform connectors also apply to the Sellopia tools.

Gemini

  1. On a computer, go to gemini.google.com.
  2. At the bottom, click Settings → Connected Apps.
  3. Under Custom apps, click Add a custom app.
  4. Enter the MCP server URL https://mcp.sellopia.ai.
  5. Click Next, then sign in with your Sellopia account and approve the access request. No credentials are needed under Advanced features.
  6. To use it in a chat, type @ and pick Sellopia.

Custom apps in Gemini are available in English to people 18 or over in the US, with a personal Google Account and Keep Activity on. Work and school accounts are not supported yet. Once connected on the web, Sellopia also works in the Gemini mobile app.

Other MCP clients

Any MCP client that supports remote servers with OAuth can connect using the same URL. The client discovers how to sign in from the server itself; no API key is needed.

Authentication

The server uses the MCP authorization flow: OAuth 2.1 authorization code with PKCE. Your AI client finds the authorization server through the protected resource metadata at https://mcp.sellopia.ai/.well-known/oauth-protected-resource and registers itself, so no setup is needed on Sellopia's side.

  • Sign-in happens on Sellopia's page. Your AI client never sees your password.
  • Scope: the only scope requested is email. The token identifies you; the data you can reach is set by your organisation's plan.
  • Your organisation is taken from your account, never from what the AI client sends, so a request cannot reach another organisation's data.
  • Revocable at any time. Every request is checked against a live session. Disconnect the connector in your AI client, or sign out of Sellopia, and access stops.

The server refuses the connection if your plan is not active.

Tools

The server offers 22 read-only tools. The Free plan covers the market data and the basic calculations; the contract, cost and portfolio analyses and the written negotiation results are on Pro. Your AI assistant chooses which to call from your request; you can also name a tool. What is available depends on your organisation's coverage, so the example prompts may need different materials for you. A good start is to ask what Sellopia covers (get_coverage) or to look a series up by name (find_series), then use the returned series_id in the other tools.

Dates are YYYY-MM-DD; currencies are three-letter codes such as EUR or USD. Where a tool takes a currency, each observation is converted on its own date.

get_coverage

What market data Sellopia holds for your organisation, and what it does not. covered lists each source served to you with its series, dates and staleness; excluded names everything else with a reason: not_verified, no_data or no_coverage.

  • No arguments.

Example promptWhat market data does Sellopia have for us?

Plan: Free

find_series

Turns words into the right stored series: candidates with a series_id, a confidence (0 to 1) and the reasons each one matches, best first. Pass the series_id to the other tools.

  • query: a material, product or input in words, optionally with a country
  • limit: how many candidates, 1 to 20 (default 5)

Example promptWhich Sellopia series tracks aluminium prices in Germany?

Plan: Free

get_cost_drivers

Per commodity, the newest price level and the newest price direction, as two separate dated facts with value, unit, basis, date, source, source type and staleness. The two are never combined into one number.

  • commodity (optional): one commodity, as named by get_coverage
  • since (optional): only facts observed on or after this date

Example promptWhat are the latest price levels and directions for our cost drivers?

Plan: Free

get_conversion_premium

The spread between a converted product and the feedstock it is made from: the ratio and absolute spread for one month, the historical band over every shared month, and both contributing prices with their own dates and provenance.

  • product (optional): one converted product, as named by get_coverage
  • period (optional): the month to report, YYYY-MM; defaults to the latest shared month

Example promptHow does this month’s conversion premium compare with its history?

Plan: Free

check_price_claim

Tests a single claim such as “up 8% since March” against the stored series. Returns holds true or false with the two dated figures that settle it, or undetermined with a reason when the data cannot settle the claim.

  • commodity
  • direction: up or down
  • magnitude: the claimed move in percent (8 for 8%)
  • since: the date the move is measured from

Example promptOur supplier says copper is up 8% since March. Does that hold?

Plan: Free

convert

Converts an amount between currencies, units (t, kg, lb, MWh, kWh, GJ) or price units (EUR/t to USD/kg) using the ECB reference rate for the date. Returns the rate used with its own date, and flags rates derived from ECB figures.

  • amount
  • from_unit and to_unit: a currency, unit or price unit of the same kind
  • on (optional): the date whose rate to use; defaults to today

Example promptConvert 1,200 USD/t to EUR/kg at the rate on 30 June 2026.

Plan: Free

get_average

The average of one series over a complete month, quarter or year, optionally lagged (M-1, Q-1). An unfinished or patchy period comes back as undetermined, never a partial average.

  • series: a series_id or commodity name
  • period: YYYY-MM, YYYY-Qn or YYYY
  • method: mean (default) or last
  • lag: 0 to 24 periods back
  • currency (optional)

Example promptWhat was the Q2 2026 average for steel, in EUR?

Plan: Free

get_price_band

Is this price high? The historical low and high with dates, percentiles p10 to p90 over the window, and the rank of the latest figure, and of a quote if given. Needs at least 12 observations in the window.

  • series
  • window: 12m, 24m, 36m (default), all, or a start date
  • quote_value and quote_unit (optional): a quote to place in the band
  • currency (optional)

Example promptIs a quote of 1.35 EUR/kg for PET high compared with the last three years?

Plan: Free

apply_price_clause

Works out what an index price clause says you owe: the index change between two period averages, times the indexed share, clamped by any cap and floor, applied to the base price. Returns every intermediate figure and the filled-in formula so it can be checked by hand.

  • series
  • base_period and current_period: YYYY-MM, YYYY-Qn or YYYY
  • method, lag
  • share: the indexed share, above 0 up to 1 (default 1)
  • cap_pct, floor_pct, base_price, currency (all optional)

Example promptOur contract indexes 40% of the price to the M-1 nickel average with a 5% cap. Base period January 2026, current period June 2026, base price 12.40 EUR/kg. What do we owe?

Plan: Pro

explain_increase

“Of their +12%, how much do our inputs explain?” Each input’s change since the date, times its share, summed into explained_pct. unexplained_pct is the rest of the claim: margin plus every cost outside the mix, not margin on its own.

  • claimed_pct: the claimed increase in percent
  • cost_mix: 1 to 20 inputs as {series, share}, shares summing to at most 1
  • since: the date the increase is measured from
  • currency (optional)

Example promptA supplier wants +12% since January. Metal is 30% of the cost and energy 20%. How much do those inputs explain?

Plan: Pro

price_materials_list

Prices a bill of materials at market index figures. Each line is matched to a series with a confidence (or uses the series you give), converted to the series unit and priced in your currency. Lines that cannot be matched confidently come back unpriced with their candidates, and partial says the total leaves them out. These are market figures, not supplier quotes.

  • lines: 1 to 200 lines of {description, quantity, unit, series?}
  • currency: the currency to price in
  • on (optional): price as of this date; defaults to the newest figures

Example promptPrice this materials list in EUR: 2 t steel sheet, 500 kg copper wire, 300 kg PE film.

Plan: Pro

analyse_cost_drivers

“They want +8%: how much do the markets explain, and where does each input stand?” Splits the claimed increase across your cost mix, as explain_increase does, and places each input in its own 36-month history. The move since the date and today’s level are reported as separate facts. An input the data cannot settle comes back in excluded with its reason.

  • claimed_pct: the claimed increase in percent (8 for +8%)
  • cost_mix: up to 10 inputs as {series, share}, shares summing to at most 1
  • since: the date the increase is measured from
  • currency (optional)

Example promptOur supplier wants +8% since January. Aluminium is 35% of the cost and power 15%. How much do the markets explain, and are those inputs high or low today?

Plan: Pro

analyse_lead_lag

Does one price move before another, and by how many months? Correlates the month-on-month changes of the two series at each lag and tests whether the result is significant. The verdict is lead_found, possible_lead, moves_together or no_reliable_lead; with less than two years of shared history it is undetermined. This shows correlation, not cause.

  • driver: the series that may move first
  • target: the series that may follow
  • max_lag: the longest lead to test, 1 to 6 months (default 6)
  • currency (optional)

Example promptDoes the copper price lead our cable supplier’s index, and by how many months?

Plan: Pro

prepare_negotiation

Prepares the market side of a negotiation for one product: your price against the market, the supplier’s ask checked, the arguments for each side, opening, target and walk-away numbers with their formulas, and questions that would sharpen the position. Only the product is required; each further input makes the result more specific.

  • product: the product being negotiated
  • side: buy (default) or sell
  • my_price, price_unit, volume, volume_unit (optional): your current price and yearly volume
  • claim_direction, claim_pct, claim_since (optional, all three together): the ask on the table
  • cost_mix (optional): up to 10 inputs as {series, share}
  • clause_series, clause_base_period, clause_current_period, clause_lag, clause_share (optional): the contract’s index clause
  • alternative_price (optional): another supplier’s quote, in your price unit
  • currency (optional)

Example promptWe pay 2.10 EUR/kg for PE film, 400 t a year, and the supplier asks +6% since April. Prepare our negotiation.

Plan: Pro

check_portfolio

Which materials moved most since a date, weighted by what you buy. Each line is priced then and now at market index figures, with its exposure (total now minus total then) and its rank. A line without a confident series match is left out with its candidates, and partial says the total leaves it out. These are market figures, not supplier quotes.

  • lines: up to 200 lines of {description, quantity, unit, series?}
  • since: the date each move is measured from
  • currency: the currency to measure in

Example promptAcross these 40 materials, which ones cost us most more than in January?

Plan: Pro

stress_test_clause

How an index clause would have priced over past quarters: each quarter’s adjustment and price, chained from the base price, the total against a fixed price and the cost of the lag. A quarter whose index is not yet published is marked not_yet_published, never estimated.

  • series: the index the clause follows
  • base_price: the price the replay starts from
  • share, lag (0 to 4 quarters), cap_pct, floor_pct (optional): the clause terms
  • quarters: how many quarters to replay, 2 to 12 (default 8)
  • volume, currency (optional)

Example promptIf we had indexed 50% of the price to aluminium with a Q-1 lag and a 4% cap, what would we have paid over the last eight quarters?

Plan: Pro

build_price_scenarios

The cost-justified price if your inputs fall, hold or rise over the coming months. Each input is moved by the p10, p50 and p90 of its own past moves over the same horizon in the last 36 months, weighted by its share; the rest of the price is held flat. These are outer cases, not forecasts.

  • my_price: the current price
  • cost_mix: up to 10 inputs as {series, share}
  • horizon_months: 1 to 12 months ahead (default 6)
  • volume, currency (optional)

Example promptWe pay 4.80 EUR/kg; copper is 60% of the cost. What price would the market justify in six months, in a low, middle and high case?

Plan: Pro

compare_quotes

Compares quotes with each other and with the market. Each quote is converted to one unit at its own date’s rate, ranked in the 36-month market band as it stood on that date, and given its gap to the market’s latest figure and median. Cheapest first.

  • product: what is quoted
  • quotes: up to 10 quotes as {name, price, unit?, quoted_on?}
  • currency (optional)

Example promptWe have three quotes for zinc: 2,900 USD/t, 2.75 EUR/kg and 2,650 EUR/t. How do they compare with each other and the market?

Plan: Pro

prioritise_portfolio

Which negotiations matter most in money. For each line: the market move since the date, any open ask checked against that move, the money at stake and the days to renewal, ranked. Lines without a series match come back with candidates.

  • lines: up to 100 lines of {description, quantity, unit, series?, claim_pct?, renewal?}, quantity per year
  • since: the date each move is measured from
  • currency: the currency to measure in

Example promptHere are our 25 contracts with their yearly volumes, open increase requests and renewal dates. Which should we negotiate first?

Plan: Pro

review_deal

Reviews a signed deal against the market: where the agreed price sat in the market band at signing, how the market has moved since and where the price sits today, how much of the first ask was conceded, and what the index clause would adjust now and whether it triggers.

  • product: the product of the deal
  • agreed_price and signed_on: the agreed price and the signing date
  • price_unit, previous_price, claim_pct, volume (optional)
  • clause_series, clause_base_period, clause_share, clause_trigger_pct (optional): the contract’s index clause
  • currency (optional)

Example promptWe signed steel coil at 720 EUR/t in March after the supplier asked for +10%. How good was that deal, and how does it look today?

Plan: Pro

allocate_volume

The least-cost split of a volume across supplier offers. Prices are converted to one currency and unit, committed minimums are placed first, then the cheapest offers up to their capacity. The split is given without a cap and once for each largest-share cap, with the cost, the extra cost against the cheapest split and the share bought in other currencies.

  • volume and volume_unit: the total to place
  • currency: the currency to compare in
  • offers: up to 10 offers as {name, price, unit, capacity?, minimum?}
  • max_shares (optional): the largest shares one supplier may take, such as [0.5, 0.4]
  • on (optional): the date for currency conversion; defaults to today

Example promptWe need 1,200 t of aluminium next year from four suppliers, no supplier above 50%. What is the cheapest split?

Plan: Pro

write_negotiation

Sellopia writes one negotiation result from the facts you give, with every figure calculated by Sellopia: a brief, the next best action, an analysis of the supplier’s reply, the state of the negotiation, a concession plan, likely counter-moves, an email to the supplier, a meeting preparation, a post-meeting debrief, risk flags, a review of a price clause (not legal advice), or several of these in one job. Each uses one negotiation from your allowance; a failed run gives it back. It returns a job reference, and your assistant reads the result with get_job when it is ready.

  • pipeline: which result to write
  • product: the product being negotiated
  • output: report, brief, email, call_script or summary
  • deal, ask, cost_mix, clause, alternative (optional): price and volume, the supplier’s ask, the inputs, the index clause, another supplier’s quote
  • state, reply, earlier (optional): dated events so far, the supplier’s latest reply verbatim, an earlier Sellopia result to build on
  • instructions (optional): your request, in your words
  • method, explain, authorisation, note, contract, stages (optional): settings for particular results, such as what an email may commit to or reveal

Example promptHere is the supplier’s reply to our counter-offer. Read it against the market and draft our answer.

Plan: Pro

Prompts

The server also provides four ready-made prompts. In clients that support MCP prompts, they appear in the prompt or command menu. Each fills in a request that names the tools to use and how to report the results.

  • Price a materials list (price_materials_list). You provide: lines, currency.
  • Apply a price clause (apply_price_clause). You provide: clause, base_price (optional).
  • Check a supplier increase (check_supplier_increase). You provide: claimed_pct, cost_mix, since.
  • Is this quote high? (is_this_quote_high). You provide: material, quote.

Data and provenance

  • Every figure carries its date, source and source type. Keep them with the number when you share it, along with any caveat or “derived” note.
  • “Undetermined” is not a denial. An undetermined answer or an excluded entry means the stored data cannot settle the question. It does not mean a claim is false or a price is stable.
  • Levels and directions stay separate. An absolute price and a change from an undisclosed base are reported as two dated facts, never combined.
  • Only verified sources are served. A source no one has yet checked against reality is listed as not_verified, not used.
  • Coverage is explicit. get_coverage lists what is covered for your organisation and what is not, and why. Absence from coverage is never a statement that a price is stable.
  • Calculations are deterministic. The server calculates on stored data; it does not use an AI model to produce figures.

Your AI assistant writes its answer from these results and can still misstate them. Check important figures against their stated source.

Limits

Every plan gives each seat an allowance of tool calls, and the paid plans an allowance of negotiations prepared in writing:

PlanTool calls per seatNegotiations per person
Free (no company account)100 per calendar monthNone
Pro1,000 per billing periodAbout 4 a month
Academy3,000 per billing periodAbout 14 a month
EnterpriseNo limitAgreed with you
  • Usage notices. From 80% of the allowance, each result carries a Sellopia usage notice with the count used and, where the allowance resets, when. Your assistant is asked to show it to you as written.
  • At the limit, further calls are refused with a notice until the allowance resets. For a higher limit, contact info@sellopia.ai.
  • Rate limit. Separately, requests are limited to 60 per minute for each user and connected client, on every plan.
  • Plans and prices: /pricing.

Privacy and security

The server receives only the arguments your AI assistant sends to a tool, never your conversation. All traffic uses HTTPS, tools are read-only, and your organisation's data is isolated by your access token.

See the Privacy Policy for how we handle personal data, and the Terms of Service for the terms of use.

Support

For help connecting, questions about your data coverage or plan, or to report a problem, email info@sellopia.ai.