Every few months a new telecom AI agent demo appears. It answers customer questions, checks coverage, even „places an order“. The demo is impressive, and then the project meets reality: the agent has no safe, reliable way to talk to the BSS/OSS landscape. The model is rarely the problem. The integration is. If your landscape already exposes TM Forum Open APIs, you are in a better position than you may think. Standardized contracts are what agents need most. But „agent-ready“ does not mean „point the agent at the OpenAPI file and hope for the best“. This article explains what works, what doesn’t, and how to do it pragmatically.

Why agents stall at the BSS/OSS boundary
An AI agent is only as useful as the actions and data it can reach. In a typical telecom landscape, those live in a product catalog, a CRM, an order management system, product and service inventories, an activation layer, and a number of network platforms. Each has its own data model, its own quirks, and its own owner.
Teams then usually do one of two things:
- Build bespoke connectors per system. This is slow and brittle. It repeats the point-to-point integration problem we already know from classic projects, now with a language model on top.
- Let the agent talk to everything directly. This is fast to demo and dangerous in production: no clear permissions, no audit trail, no protection against a wrong action.
Both approaches ignore something you may already have: a standardized integration layer.
Why TMF contracts fit agents well
I have argued before that TMF Open APIs are best used as pragmatic integration contracts, not as an architecture framework. That same property makes them good agent interfaces:
- Standardized resources. A
ProductOffering,ProductOrder, orServicemeans roughly the same thing across vendors. An agent (or the people writing its tools) doesn’t have to learn a new vocabulary for every system. - Predictable schemas. TMF APIs follow common REST design guidelines: consistent resource paths, filtering, pagination, field selection (
fields=), and state models. A tool built for one TMF API is easy to adapt to the next. - Machine-readable descriptions. Every TMF API ships as an OpenAPI specification. That is effectively a ready-made inventory of operations, parameters, and payloads, which is exactly what an agent tool catalog needs.
- A stable boundary. Behind a TMF facade you can replace or upgrade the system of record without the agent noticing. This matters because models and agent frameworks change much faster than BSS platforms.
In other words, the agent becomes one more client of your integration contracts, like the mobile app or the PC channel behind your digital channel / BFF.
Where „agent-ready“ breaks down
Honesty matters here, because this is where projects get surprised.
- TMF specifications are large and generic. They contain many optional attributes, polymorphic types (
@type,@baseType,@schemaLocation), and extension points. Handing a model the full schema wastes context and invites mistakes. - Implementations differ. Two vendors can both be „TMF622 compliant“ and still differ in mandatory fields, supported filters, state handling, and error behavior.
- Semantics live outside the schema. The OpenAPI specification tells the agent how to call an endpoint, not when it is appropriate, what a state like
heldmeans in your process, or which operation is safe to repeat. - Responses contain untrusted text. Descriptions, notes, and free-text fields can carry anything. If an agent reads them as instructions, you have a prompt-injection path from your own data.
- Data quality problems become visible. A human operator silently works around inconsistent inventory data. An agent will repeat it with confidence.
The conclusion: do not expose TMF APIs 1:1. Put a thin, curated layer in between.
The target picture: the agent as another channel
AI Agent (LLM + tool-calling / MCP)│▼Agent tool facade (small, intent-level tools, schema trimming)│▼API gateway / IAM (authN/authZ, rate limits, audit)│▼TMF API facades → Catalog · Inventory · Qualification · Order Management│▼Systems of record
The important parts:
- The tool facade (for example an MCP server or plain function-calling definitions) offers a handful of intent-level tools such as
find_offers,check_availability, orget_order_status. It does not offer “all of TMF622”. - The gateway is the same one your other channels use: same authentication, same limits, same logging.
- The orchestration stays where it is. The agent never replaces your Customer Order Management / orchestrator. It talks to it through the same contracts as everybody else.
Which TMF APIs to give an agent, and how
Think of three tiers by risk. Start at the bottom, move up only when you’ve earned the trust.
Tier 1: Read-only (TMF620, TMF637, TMF638)
| API | What the agent can learn | Typical risk |
|---|---|---|
| TMF620 Product Catalog | Offers, specifications, prices, lifecycle status | Low (public or semi-public data) |
| TMF637 Product Inventory | What a customer actually has | Medium (personal data) |
| TMF638 Service Inventory | Deployed service state | Medium (technical and personal data) |
These are the safest starting point. Even if the agent misunderstands something, nothing changes in your systems. Still apply discipline:
- Use
fieldsandlimitto return only what the task needs. This reduces cost, latency, and data exposure at once. - Restrict inventory queries to the “customer in context”. The agent should not be able to run an unbounded
GET /product. - Instead of giving the agent generic GET access to an API, expose a few narrow, purpose-built tools, for example get_customer_active_products or get_order_status. Each tool wraps one specific TMF call with fixed filters, a trimmed field list, and mandatory customer scoping.
Tier 2: Qualification (TMF679, TMF645): the sweet spot
Qualification APIs are in my experience the best first „active“ use case for agents:
- TMF679 Product Offering Qualification answers: may this customer buy this offer, in this configuration?
- TMF645 Service Qualification answers: can we technically deliver this service here (address, coverage, resources)?
They are ideal because they are question-shaped. The agent asks, the system answers, and nothing is committed. They also encode rules that are painful to explain in a prompt: eligibility, coverage, resource availability. The agent doesn’t need to know those rules; it only needs to report the answer clearly and honestly, including “not available” and “available with conditions”.
One practical note: qualification can be asynchronous. The facade should hide polling or callbacks from the model and return a clear result or a clear “still in progress”.
Tier 3: Write (TMF622, TMF641): only with a human in the loop
Creating a product order (TMF622) or a service order (TMF641) commits the company to something: cost, provisioning, customer contract. My recommendation is blunt:
- The agent prepares, a human confirms. The agent assembles a draft order, shows it in readable form, and a person (contact-centre agent, customer, or both) approves it.
- The agent never holds a credential that can submit orders on its own. Approval produces a short-lived, single-purpose authorization used by the facade to submit the order.
- Service orders (TMF641) are not for agents at all in most landscapes. They belong to the orchestration between Customer Order Management and Service Order Management, not to a conversational layer. Let COM decompose the product order into service orders as it does today.
This is not conservatism for its own sake. It is the same principle as in pragmatic order lifecycle design: there must be exactly one place that owns order state.
Three practical scenarios
1. Contact-centre assistant (catalog and inventory)
Situation: A customer calls: “What do I currently have, and is there something better for the same price?”
Flow:
get_customer_products:TMF637 (active products for this customer, trimmed fields)find_offers:TMF620 (relevant offers, current lifecycle status)check_eligibility:TMF679 for the most promising offers- The agent summarizes options in plain language for the human operator.
- If the customer wants a change, the agent drafts the order; the operator confirms.
Value: The operator no longer clicks through three screens.
Risk: low, as steps 1–3 are read or question-shaped.
2. Availability check by address
Situation: A prospect asks: “Can I get fibre at this address?”
Flow:
- The agent normalizes the address and asks for missing parts (floor, building, etc.).
check_service_availability:TMF645, with the service specification from TMF633 where needed.- The facade returns a clean result: available / available with conditions / not available / unknown.
- The agent explains the result and offers next steps (matching offers via TMF620/TMF679).
Pragmatic rule: the agent must never promise more than the qualification result says. “Qualified” is not an installation date.
3. Order status diagnosis
Situation: “Where is my order?” is among the most common and most expensive questions in any telecom.
Flow:
get_order_status:TMF622 (order and item states).- If items are still in progress, follow the correlation to the related service orders (TMF641, read-only).
- Check the resulting service state in TMF638 and the product state in TMF637.
- The agent explains where the order is stuck, in human language: “Item 2 is waiting for activation since Tuesday”.
What makes this one interesting: order state and inventory state don’t always agree. In a well-designed landscape, service state drives product state through orchestration, order state is advanced mainly by fulfilment results, and inventory provides reconciliation and the authoritative deployed state. When they diverge, the agent must report both and flag the discrepancy, not decide which one is right. Deciding is a job for operations, or for your reconciliation process.
Governance: what makes this production-grade
This is the part demos skip. It is also where your IAM and API-management foundation pays off.
Identity and permissions
- Give the agent its own identity (OAuth2 client), separate from users.
- Carry the end user’s identity and context along (for example via token exchange / on-behalf-of), so authorization decisions reflect who is actually asking.
- Define scopes per tool, not per API:
offers:read,inventory:read,qualification:check,order:draft. There is deliberately noorder:submitfor the agent. - Enforce data-level rules (customer scoping, field masking) in the facade or gateway, not in the prompt.
Audit
- Log every tool call: who asked, which agent, which tool, which parameters, which result, and a correlation ID tying it to the conversation.
- Keep it queryable. When someone asks “why did the assistant say that?”, you need an answer.
Limits
- Apply rate limits and quotas per agent and per tool. A looping agent should hit a wall quickly and cheaply.
- Add a kill switch: disabling a tool or the whole agent without a deployment.
Idempotency
- Models retry, and so do networks. Any write path (even a draft or a confirmed submission) must be safe to repeat. Use an idempotency key or the order’s
externalIdat the facade so a duplicate request cannot create a second order.
Untrusted content
- Treat everything coming back from APIs as data, never as instructions. Strip or fence free-text fields where possible, and never let response content change the agent’s permissions.
Common mistakes
- Handing the agent the whole API. Large generic schemas confuse models and widen your attack surface. Offer a few intent-level tools.
- Bypassing order orchestration. Letting an agent create service orders or poke inventory directly produces state that Customer Order Management knows nothing about.
- Ignoring order and inventory discrepancies. The agent will happily narrate inconsistent data as fact unless you design for it.
- Starting with write access. Read and qualification use cases deliver value faster and teach you how the agent behaves.
- Treating the prompt as a security control. “Never submit orders” in a prompt is a wish, not a control. Permissions belong in IAM and the gateway.
- Skipping observability. Without audit and metrics you can’t improve the agent or defend its decisions.
- Building a new architecture around the agent. You don’t need an “agent platform” to start. A thin facade and your existing gateway are usually enough.
A pragmatic starting plan
- Pick one scenario from tier 1 or 2, for example order status or availability checks.
- Define 3–5 intent-level tools and map each to specific TMF operations with trimmed fields.
- Route everything through your existing gateway and IAM, with agent-specific scopes.
- Add audit and limits from day one, not “later”.
- Run it in shadow or assist mode with human operators, measure accuracy and time saved.
- Only then consider drafted writes, with explicit human approval.
Conclusion
TMF Open APIs don’t make your landscape magically agent-ready, but they give you something rare: a stable, standardized contract layer that you already own. The pragmatic path is to treat the AI agent as one more client of that layer, like the mobile app or the BFF: curated tools, scoped permissions, full audit, and orchestration left where it belongs.
The contract stays stable. The agent is just another consumer.
Planning to connect an AI agent to your BSS/OSS landscape and want to know which integration approach is realistic? A short initial conversation is free and non-binding.
Kommentare
Ein Kommentar zu „TMF Open APIs and AI Agents: Why Your BSS/OSS Landscape Is Already Agent-Ready (and Where It Isn’t)“
[…] my previous article on TMF Open APIs and AI agents I recommended putting a “curated layer” between the agent and your TMF Open APIs, and called it […]