Prerequisites
Every call needs a Bearer token. See Authentication for
how to get one. The REST base URL is
https://api.noonum.ai/v2; the MCP base URL is
https://api.noonum.ai/v1/mcp.The lifecycle at a glance
| Step | What you do | REST | MCP tool |
|---|---|---|---|
| 1 | Sharpen the objective | POST /enhance-objective, POST /reverse-objective | enhance_objective, reverse_objective |
| 2 | Check existing strategies | GET /strategies?scope=public | list_strategies |
| 3 | Create the strategy | POST /strategies | create_strategy |
| 4 | Submit for processing | POST /strategies/{id}/submit | submit_strategy |
| 5 | Review holdings | GET /strategies/{id}/companies | get_strategy_companies |
| 6 | Refine with exclusions | PATCH /strategies/{id} + resubmit | update_strategy + submit_strategy |
Write a good objective
The objective determines which companies get selected and how their relevance is scored.You author the objective yourself and submit it with Over MCP, the
POST /strategies (Step 3). Two
helper endpoints can refine a draft first: POST /enhance-objective sharpens it and
POST /reverse-objective flips it. Both are covered below.Format
Always begin with “The strategy is to invest in companies that are …” followed by a single paragraph describing the opportunities, products, themes, and value-chain segments you want exposure to.A strong objective is:- Specific: “…developing solid-state battery technology for electric vehicles”, not “…in the energy sector”.
- Scoped to a clear value-chain segment, such as upstream suppliers, manufacturers, or end-market applications.
- Theme-focused: describe the investment theme, not individual companies.
- Product-oriented: focus on what companies do, build, or sell.
- Naming specific companies. Noonum finds them for you.
- Generic sector labels with no thematic direction.
- Overly broad framing that would match thousands of companies.
- Negative framing. Use exclusions for what you want to leave out.
Examples
Sharpening a rough thesis
If you start from a rough idea, expand it into a structured objective: keep the original intent and scope, then add value-chain segments and specificity around products, technologies, or business models.POST /enhance-objective (MCP: enhance_objective) does
this for you: send a draft as { "objective": ... } and it returns an enhancedObjective
plus an improvementsSummary describing what changed.From an article
To build from a news article, report, or post, pass the relevant text straight toPOST /enhance-objective. Paste in an article you have, or fetch a page and pass its text.
The endpoint reads the raw text and returns a focused enhancedObjective. A source with no
identifiable investment theme is a poor one.generate_strategy_from_content prompt does the same from arbitrary text you
pass in.Reverse objectives
To create a thematic inverse (useful for hedging or pair trades), flip the directional exposure while keeping positive framing. Describe what the opposite side is rather than negating the original:| Original | Reverse |
|---|---|
| Renewable energy adoption | Fossil fuel infrastructure |
| Remote work technology | Commercial real estate and office services |
| Plant-based food innovation | Traditional livestock and meat processing |
POST /reverse-objective (MCP: reverse_objective) automates this: send the original as
{ "objective": ... } and it returns a reverseObjective and a suggested reverseName.Pick a name
Choose a descriptive name of 2–5 words with no “Strategy” suffix, for example “AI Infrastructure”, “GLP-1 Weight Loss”, or “Nuclear Renaissance”.Check what already exists
Check whether the strategy already exists. Noonum publishes a public catalog of
strategies, and you may already have a similar strategy of your own.Pass
scope=all to get your own strategies plus the public catalog in one deduplicated
list. Compare your objective against the names and objectives that come back. If a close
match exists, reuse it as-is, copy it under a new name and objective, or proceed with a new
strategy. Both calls are read-only, so listing alone is enough if you just want to browse.Create the strategy
Create the strategy with your confirmed name and objective. Exclusions are optional here and
can be added later once you’ve seen the holdings.The response includes the new strategy’s
id, which you use to submit and to retrieve
results.Submit for processing
Creating a strategy stores its definition. Submitting runs the pipeline that finds and
ranks companies, a job that can take several minutes.The pipeline reports these stages, which a client can surface as progress:
- Initializing strategy processing
- Interpreting investment objective
- Contextualizing with billions of market data points
- Retrieving and ranking relevant companies
- Scoring alignment and exposure metrics
- Strategy is ready
Submit and poll
Submission returns astatus you poll until the run finishes. status is a percent-complete
value: 0 when the job has not started, 1–95 while it is in progress, and 100 when the
strategy is ready. A negative status (-1 or -2) means the run failed. Poll until
status reaches 100, then fetch results with the read-only endpoints below. Other guides
refer back to this submit-and-poll loop.Practical notes:- Expect a slow call. A single submission can take up to ~10 minutes. Set your HTTP request timeout accordingly.
- A timed-out request may still finish in the background. Once
statusreaches100, fetch results with the read-only endpoints below without resubmitting. - Submitting a strategy that is already processing is rejected. Wait for the in-flight run to finish or fail.
submit_strategy wraps this submit-then-poll loop and emits standard progress
notifications, so you call one tool and wait. See the
MCP server reference for the progress and timeout semantics.Review the holdings
Once Review the inclusion reasoning for the top 5–10 companies to judge whether the objective
landed where you intended. If the companies aren’t what you expected, adjust the objective
(make it more specific, better-scoped, or target a different value-chain segment) rather
than reaching for exclusions.
status reaches 100, retrieve the strategy’s ranked companies. Each row carries
scoring and exposure metrics. Ask for reasoning to see why each company was included.Tuning the results
The companies endpoint takes two query parameters that shape what you get back:includeReasoning=trueadds the inclusion reasoning text to each company.scoringMinMarketCapsets the minimum market cap (USD) for conviction scoring. Companies below the threshold receive aconvictionScoreof0.convictionScore,linguisticBeta, andmarketBuzzare Noonum’s thematic signals; see Signals and scores for what each measures.
download_strategy_companies).Empty results
If a strategy comes back with no companies, the theme is probably too niche. Broaden the objective, or start from a related strategy in the public catalog.Refine with exclusions
Exclusions are short phrases describing types of company to filter out. Base them on the
companies you see in the holdings, after the run, not on blind theme-based guesses.Write each exclusion as a description of what a company is, not what it isn’t:Apply exclusions by updating the strategy, then resubmitting so the pipeline re-ranks with
the new filter:Then re-review the holdings (Step 5) to confirm the right companies were removed and the
ones you wanted to keep remain.
- 2–6 words per phrase.
- Do not prefix with “exclude” or use negation.
- Describe the company type directly.
Where to go next
- Dig into per-company evidence with
GET /strategies/{strategyId}/companies/{companyId}(get_strategy_company) or pull all reasoning at once withGET /strategies/{strategyId}/evidences(get_strategy_evidences). - Pull historical snapshots of a strategy’s holdings to study how the theme evolved.
- Drive the entire flow from an LLM client via the Noonum MCP server.