An agent asked where the S&P 500 is may call the quotes tool, find a row with that name, and read you the number. The number is real. It may also be several points away from the cash index, because the row is a futures contract. The label is short for the reader’s sake. The agent has to supply the rest.
What the tool returns
get_quotes returns delayed index and ETF quotes. Four of its rows are futures, each named after the index it tracks. The row called S&P 500 is the E-mini S&P 500 future. The row called Nasdaq is the Nasdaq-100 future. The rows called Russell and Dow are futures too. NoVo’s documentation for agents states this in capitals.
Why futures
The cash indexes only print during the regular session. Futures trade overnight and before the bell. Using them means the row still has a current reading at times when the cash index has none. That is a sensible choice for a ribbon of quotes. It does mean the row and the index are different instruments.
The gap between them
A future and its cash index trade a small distance apart, called the basis. It reflects interest and dividends between now and the contract’s expiry, and it changes over the life of the contract. The gap is normal. An agent that sets a futures row against a cash print and reports the difference as a move has measured the basis. How the future relates to the fund is covered in ES futures versus SPY options.
Two names that mislead
The Nasdaq row is the Nasdaq-100 future. It is not the Nasdaq Composite, which is a different index at a different level. A model sees the word Nasdaq and may attach whichever index it has in mind. The agent should say Nasdaq-100 futures.
The feed has a row called Crude and a row called Brent. Crude is the WTI contract. Brent is a separate contract. They are not interchangeable, and they trade a real spread apart. An agent asked for the oil price should say which one it is quoting.
One stamp for the whole response
The quotes response is keyed by display name, so its freshness covers the whole set. The stamp is the oldest row’s. That is the freshness the response can honestly promise for every row in it. An agent should not assume every row is exactly that old. It should give that age as the limit.
What the agent should say
The fix is a word. S&P 500 futures are at this level, delayed, as of this time. If you asked for the cash index and the tool only has the future, the agent says that too. It should never quote a futures row as the index it is named for.
If you want the fund and not the future, get_dealer_levels returns spot for SPY, QQQ and IWM alongside the walls. That is a third instrument again. A careful answer names which of the three it used.
The warning sits in the tool’s own documentation because a model reads that every time. It is one of the caveats described in the warnings written into a market tool. Over a weekend the same care applies to perps, which are compared with futures in the perp versus Sunday night futures.
The quotes tool is free on the MCP & API.