Self-hosted · your keys · your network
ai spend, activity and access

See your AI spend, your AI activity, and the tools nobody approved. Govern access to all of it, behind your own firewall.

Your finance system knows what you were billed. Your security tools watch the network. Neither can tell you which AI your business is paying for, what it is being asked to do, or who approved it.

Token Observe puts your AI subscriptions, your API spend, your AI activity and your approved-tool list in one place — on your own infrastructure, behind your own firewall. See what you are paying for, what it is doing, and who is allowed to use it.

The longer answer, clause by clause

Token Observe keeps a register of every AI service and subscription your business uses, each with a named owner. It imports your invoices as JSON or CSV to record what was actually billed in each currency, and records metered token estimates separately — a charge and an estimate are different measurements, and adding them together produces a total that is true of nothing. It classifies what it sees as approved, prohibited, unknown or unobserved, so a paid subscription is never reported as unauthorised use and a disconnected source is reported as unknown rather than as zero. Where a configured integration exposes it, it records bounded, redacted prompts, replies and tool activity with truncation and source provenance. Operators reach all of it through one dashboard, REST API and MCP interface under team scoping, and the whole thing runs on your own infrastructure with your own provider keys.

what it is for
See the spend. What it costs

A register of every AI service and subscription with a named owner, invoices imported as JSON or CSV for what was actually billed per currency, and metered token estimates recorded separately. A charge and an estimate are never added together. An import finds what the invoice lists, which is not necessarily every subscription you have.

See the activity. What it is doing

Bounded, redacted prompts, replies and tool activity, with truncation and source provenance kept alongside them, wherever a configured integration exposes that content. Hidden chain of thought is not readable from any provider, so it is not recorded and not claimed.

Govern the access. Who may use it

Every observed service classified approved, prohibited, unknown or unobserved, reached through one dashboard, API and MCP interface under team scoping. An approved subscription is legitimate usage, never an unauthorised-use finding; a disconnected source is unknown rather than zero; and a hostname is not a verified employee identity.

the gap

Three systems already hold part of the answer. None of them holds this one.

Your finance system, your security tools and your identity provider each answer a different question. None of them answers this one.

Your finance system

knows what you were billed

and shows it as a line per vendor. It cannot tell you which team spent it, which of your AI subscriptions overlap, or what the metered API usage sitting beside them actually came to.

Your security tools

watch the network

and can tell you a hostname was reached. A hostname is not a verified employee identity, and a source nobody has connected yet reports no traffic — which reads as clean and means unknown.

Your identity provider

knows who works here

and which applications you federated. The AI tool somebody signed up for last month with a corporate card and a personal login is in none of those places.

What sits in the gap is one register: every AI service your business uses, what it actually cost, what it was asked to do, and whether anybody approved it.

See what it records
the mechanism

Eleven steps, in an order that is load-bearing.

Every request takes the same eleven steps. Here is what happens at each one, and why the order is part of the guarantee.

The eleven steps, and why the order is part of the guarantee

Every governed request follows the same path. The order is encoded in the evaluator rather than written down as a convention, because several of the guarantees depend on it: the trace opens before the decision, so a blocked request is still recorded.

  1. 01

    Authenticate

    The agent presents its gateway-minted key as a bearer token, or on x-api-key for the Anthropic dialect and x-goog-api-key for native Gemini. Token Observe takes the SHA-256 of what was presented, looks the key up by that digest, and re-compares the stored and computed digests in constant time.

  2. 02

    Resolve the agent

    Loads the agent record, its roles, the kill switches currently in force that select it, and its recent spend window. All four are read live from the store on every request: on this path there is no cached copy, no sync job and no propagation step. The one deliberate exception is elsewhere — the signed bundle a developer seat hook decides against, which is a snapshot by design and is bounded by a freshness window rather than read live.

  3. 03

    Open the trace

    A trace id is minted and its row written before anything can reject the request, and a metadata-only opening event is appended: the requested model, message and tool counts, tags, session id and the names of any forwarded headers. The id comes back on x-acp-trace-id on every outcome, blocked ones included, and on both vendors’ own request-id headers as well, so an SDK’s logging correlates with the flight recorder without being configured to.

  4. 04

    Sanitise

    All text content is normalised to a fixpoint — the loop repeats because removing one layer can reveal another — stripping the Unicode Tags block, zero-width characters, bidirectional embeddings, overrides and isolates, the invisible formatting characters, the supplementary private-use planes, and lone halves of a surrogate pair. Where anything is removed, a trace event records how many characters and which categories went — never the characters themselves.

  5. 05

    Scan

    The personal-data and secret detectors run over the prompt content, and a heuristic injection scan scores it. Content that arrived as a tool result is scored at 1.25 times, because the author of a tool result is data rather than a principal — a directive found there is indirect injection by definition, where the same words from the user might be a request. Both detectors are pattern-based, and their limits are published rather than implied: matching is regular expressions plus checksums, so a card number, an IBAN or an NHS number validates at high confidence while free-text personal data — a name, an address, a described condition — is not detected at all, and neither are identifier formats outside the UK and US shapes the detectors know. The injection heuristics are regular expressions too, so paraphrase, translation and encoding defeat them; the product’s own threat model records that as an accepted false-negative rate requiring a named person’s sign-off. Confidence scores are exposed so a policy can set its own threshold, and the honest description in the source is a compensating control rather than a complete data-loss-prevention system.

  6. 06

    Govern

    One function returns one verdict — allow, block or require approval — plus a redaction plan. Inside it the order is fixed and the first hard failure wins: engaged kill switches, then agent lifecycle status, then deny-by-default role checks including every link of an agent-to-agent delegation chain, then rate limits — the USD ceiling is deliberately deferred for any agent that has one configured, because money cannot be decided honestly until routing has fixed which upstream will actually serve the call — then the policies whose scope selects this subject, by priority, with block beating require-approval beating redact and warn.

  7. 6b

    Intersect with the named human

    When on-behalf-of enforcement is switched on, the roles mapped from the named principal’s identity-provider groups are appended as the last link of the delegation chain and run through the same delegated evaluator that agent-to-agent delegation uses — a function whose entire contract is that every link must allow. The intersection can therefore only narrow what step 6 allowed: a human whose group grants everything is a no-op rather than an escalation. Only one of the three settings actually refuses anything, and the threat model says so in as many words: off, the default, resolves no principal at all, and shadow resolves everything and records what it would have refused while letting the request through. An install that has not reached enforce should not describe the intersection as a mitigation it holds.

  8. 07

    Enact

    Shadow matches are recorded first, whatever the verdict. On block, a typed error goes back and the trace closes as blocked; on require-approval, an approval record bound to a hash of the request payload is created, an approval-requested event is published, and the caller receives a 403 carrying the approval id; on allow, the redaction plan is applied to the outbound payload and a redaction event records kinds and counts, never values.

  9. 08

    Route

    A concrete provider and model are resolved, honouring the agent’s data policy — zero data retention, no training on payloads and a required serving region are three independent constraints rather than one flag — with a typed fallback chain built behind the chosen target. For an agent under a budget, the primary target and every fallback still standing behind it are priced against the resolved model and provider kind rather than the name the caller typed; a reachable target with no active price row is refused with a 409 before egress; and the conservative estimate — each leg taken at the highest rate in the reachable candidate set — is tested against the hour, day and month windows and reserved in one per-agent transaction, so concurrent calls cannot each pass a ceiling one of them breaches.

  10. 09

    Call upstream

    One explicit timeout, at most two retries beyond the first attempt per provider with full-jitter exponential backoff from 250 ms capped at four seconds, an upstream Retry-After honoured up to a ten-second ceiling, and a per-provider circuit breaker. Failover is typed: a timeout, a rate limit and an upstream server error move to the next candidate in the chain, while a content-policy refusal, an authentication failure, an invalid request and an over-long context do not.

  11. 10

    Govern the response

    If the model proposes a tool call, that proposal is evaluated against tool-call policies before it is handed to the client. On a stream the frames are held per index until the arguments parse as complete JSON, governed, and only then released.

  12. 11

    Meter and record

    Provider usage is normalised into one shape whose cache buckets are mutually exclusive by construction, priced, written to the ledger, appended to the trace as events, and the trace is closed with a terminal status before webhook events are emitted.

Each step also has a reason for sitting exactly where it does, and on a governance product those reasons are the specification rather than the commentary.

Read the whole path
what it costs to adopt

One environment variable.

One environment variable, your own keys, and six providers under the same set of policies.

What changes in your stack, and what it costs to adopt

A base-URL change is the normal case for the OpenAI-compatible, Anthropic and Gemini dialects. Whether your own SDK and version behave that way is the first thing to check, and the first thing a proof of concept settles.

Point an agent at Token Observe by changing one environment variable
OPENAI_BASE_URL="https://tokenobserve.company.com/v1"     # was https://api.openai.com/v1
ANTHROPIC_BASE_URL="https://tokenobserve.company.com"     # was https://api.anthropic.com

From that moment the agent has an identity, a budget, a permission set, and a searchable record of each governed request.

first-class upstreams
OpenAI
Chat Completions, Responses and embeddings
Anthropic
Messages, including the x-api-key dialect
Google Gemini
Native Gemini ingress
OpenRouter
With caller-controlled route selectors refused before egress
Amazon Bedrock
For estates that will not egress to a model vendor directly
Azure OpenAI
Deployment-name routing under the same policies
Your own endpoint
Any OpenAI-compatible endpoint you host

the same policies, redaction, budgets and tracing apply identically whichever one serves the request — a policy that fires on OpenAI but not on Gemini is worse than no policy

the platform

15 capabilities, one decision point.

Most estates need three or four of these and can defer the rest. The groups are the order the questions arrive in, not the order the code is organised in.

See the estate

Know and authorise

Decide and enforce

Route and prove

Reach further than the model call

All 15 arrive with the same base-URL change, and each one states what it will not do on its own page.

Open the platform
after it acts

Evidence that does not depend on this box being honest.

A record you can search in plain English, export, and hand to somebody who was not there.

How the chain and the exports actually work

Every governed request, tool call, result, token count and policy decision is written to a hash-chained log, searchable in plain English, and exportable as a digest-sealed evidence file carrying the chain’s own verdict. The chain can be anchored with an Ed25519 signature held outside the database that produced it, which is what turns “here is our audit log” into something a third party can check.

It is tamper-evident rather than tamper-proof, and the difference is stated on the page rather than left for a reviewer to discover.

Read the security page
Three properties a reviewer will ask about
Searchable in plain English
“Show all refunds over £200 approved by AI” is translated into a validated filter object, never into SQL, and the interpreted filter is shown back as editable chips. It degrades to a deterministic keyword parser when no model is configured, so search still works when the budget circuit breaker has tripped.
Attributable reads
Listing, searching, opening and exporting evidence are themselves recorded events, scoped to the reader’s team. An audit trail that nobody can be shown to have read is half an audit trail.
Sealed, not signed
An export carries a SHA-256 digest and the audit chain’s verdict. It is deliberately not described as signed: durable origin evidence comes from the keyed audit chain plus an anchor retained independently, and conflating the two would be the easiest overclaim on this page.
limits, up front

What Token Observe does not do.

What Token Observe does not do, so you can decide early whether any of it matters to you.

The published limitations, taken from the product's own list

Taken from the product’s own published limitations rather than written for this page. If you find something that is not on this list or on the security page, it is genuinely not known.

  • Token Observe has not had an independent penetration test.

    No third-party security assessment, red-team engagement or code audit has been carried out on it. The security work done so far is internal: a five-dimension adversarial review with a three-verifier refutation panel per finding, a STRIDE threat model, targeted testing of specific attacks including a forged audit chain and adversarial ReDoS inputs, and the automated release gates. That is a genuine amount of work and it is not the same thing as an external test, so it is not presented as one. A pre-purchase penetration test by a prospective customer is welcome and expressly permitted by the licence.

  • There is no SOC 2, ISO 27001 or ISO/IEC 42001 certification.

    None is held, none is in progress, and certification is deliberately not on the near-term roadmap. What exists instead is a control-by-control mapping to EU AI Act deployer articles, ISO/IEC 42001 Annex A, NIST AI RMF and the OWASP LLM and agentic lists, each framed as “this feature helps evidence that clause” rather than as compliance. A design-partner agreement can carry a contractual commitment, with a named date, to any certification milestone your procurement process requires.

  • The audit chain is tamper-evident, not tamper-proof.

    Unkeyed is the default, and on a default install an operator with write access to the database file can rewrite an entry, recompute every downstream hash, and get valid: true. A test does exactly that, deliberately, so the limit is a tested fact. Keyed protection and off-box Ed25519 anchoring close most of it and both are off until you configure them; even then, key theft signs anything, history before the first anchor is covered by no anchor, a sink administered by the party that runs the database is not independent, and only an RFC 3161 authority or a public ledger proves when.

  • Evidence exports are digest-sealed, not signed.

    A trace export and a compliance bundle carry a SHA-256 over the canonical JSON of the bundle and the embedded chain-verification verdict. That detects accidental or post-export edits; it does not prove origin. Durable origin evidence comes from authenticated delivery and, for the ledger head, from keyed audit plus an Ed25519 anchor retained independently of the database. WORM export, RFC 3161 timestamping and a Merkle tree for partial-log proofs are not built.

  • There is no availability service level and there are no service credits.

    No uptime percentage is offered, and none should be accepted from any self-hosted vendor without asking what it could possibly mean. The vendor can commit to responding, to diagnosing and to fixing defects in the software; it cannot commit to the availability of your deployment, because it does not run it, cannot observe it and cannot restart it. There are no service credits because there is no service level to credit against, and there is no out-of-hours or 24/7 cover.

  • It is a single-writer SQLite process on one node, with no high availability, no point-in-time recovery and no proven recovery objectives.

    There is no replica and no clustering by design at this scale, and no claim that process-local login throttles, connector buckets, OIDC transactions, provider circuit state or MCP sessions are safe to multiply across replicas. Recovery is from a retained full snapshot, not from point-in-time recovery. Recovery automation exists; a partner-proven recovery point or recovery time does not, and the twenty-four-hour and one-hour figures that appear in planning documents are unqualified planning objectives rather than evidence or commitments.

  • There is no throughput or capacity commitment.

    The only published number is a thirty-second, mock-provider, single-laptop laboratory baseline, published with its own list of what it does not prove and an instruction not to turn it into a concurrency limit or a throughput commitment. No retained partner-shaped sustained-load result exists, and publishing a capacity figure before that would be a guess wearing a number.

  • There is no claim that the vendor is legally never a processor.

    Runtime phone-home is zero and the published licence undertakes it, which removes the data processing agreement, sub-processor and transfer-assessment path from the ordinary supply of the software. It does not decide the legal roles created by evaluation terms, support access, incident handling or data you choose to share, and counsel must analyse those separately. Before sending a log excerpt or a diagnostic bundle, redact it; if it would contain personal data, execute a data processing agreement first.

Every capability page carries the same section for its own subject, and the security page names the residual risks that require a person to accept them in writing.

See what is not claimed
where it runs

On your infrastructure, on your keys.

It runs on your infrastructure, on your keys. We receive nothing, and there is nothing to phone home.

The deployment shape, and the measured capacity baseline behind it

There is no hosted tier, no phone-home and no licence callback. That is a deliberate architectural position rather than a stage the product has not reached yet.

Deployment model

Self-hosted, bring-your-own-key

Runtime

Node.js 24 LTS, or the published container image

Data store

SQLite in WAL mode, one file

Shape

A modular monolith: one process, one database, five surfaces

Vendor telemetry

None. No phone-home, no product analytics, no vendor-side copy of your traces

Network egress

Governed payloads leave your network only for the model and tool providers you configure, after policy and redaction

measured, not asserted
p50 governed request
71ms
p95 governed request
164ms
throughput
206 requests/second
storage per request
3.1 KB per completed request

30 seconds at concurrency 16, 6,216 requests, zero failures, on an Apple M1 Max with a mock upstream provider. Thirty seconds is not a soak, a mock upstream excludes provider latency and failover, and a fresh database does not model a partner-sized trace corpus. Treat it as evidence about the code path, not as a throughput commitment. the command that produces it ships in the repository: node scripts/bench.mjs --duration-seconds 30 --concurrency 16 --json

who signs it off

Four people have to agree, and they disagree about what matters.

Four people usually have to agree. Each of these pages answers the question that reader actually asks.

against the alternatives

Most of what you would compare this to is a different job.

Where another tool is the better fit, and where this one is.

Where each alternative is the better fit, and where this one is

6 category arguments and 22 head-to-head pages against named products. Each one includes a section on where the alternative genuinely wins, because pages that conclude “choose us” every time are not read as comparisons. Vendor capabilities are as those vendors publish them and have not been independently tested.

written for people who are not buying

Most of this site is reference, not argument.

If you arrived from a definitional search you are not in the wrong place. These are the parts written to be useful on their own terms, and they are the majority of the site by word count.

before you buy anything

Read it. Run it. Attack it.

Source-available, with thirty days to evaluate it and no restriction on what you publish about it.

What the licence permits, and what it does not

Commercial source-available, which is the harder of the two available words and the accurate one. The governance domain is pure functions with zero runtime dependencies, so what allow, block, approve and delegate actually mean can be read in a day without standing up any infrastructure — and security research, including publication of what you find, is expressly permitted.

The published licence is a template pending review by counsel rather than legal advice, and the final terms are the ones in your signed agreement.

permitted
  • Use, modify and self-host under a licence
  • Read the entire governance domain before buying: the core package is pure functions with zero runtime dependencies
  • Security research, and publication of the results, with no gag clause and no pre-approval
not permitted
  • Redistribution
  • Offering Token Observe as a competing hosted service
Ask about Token Observe
Ask anything about what this governs, what it refuses, what it costs or what it does not do. Answers come from what is published on this site, and it will say so when something is not.

Prefer to ask a person? Write to us →

Questions people ask before a first email

The full set, grouped by what you are trying to find out, is on the questions page.

What is Token Observe?

Token Observe is a customer-hosted platform for SMBs and mid-market businesses that answers four questions about the AI your organisation uses: what it costs, what it is being asked to do, which tools nobody approved, and who may use any of it. It keeps a register of your AI services and subscriptions, each with a named owner. It imports invoices as JSON or CSV to record what was actually billed in each currency, and records metered token estimates separately — a charge and an estimate are different measurements, and adding them together produces a total that is true of nothing. It classifies what it observes as approved, prohibited, unknown or unobserved, so an approved paid subscription is never reported as unauthorised use and a source nobody has connected is reported as unknown rather than as zero usage. Where a configured integration exposes the content, it records bounded, redacted prompts, replies and tool activity with truncation and source provenance kept beside them; hidden chain of thought is not readable from any provider and is not claimed. Operators reach all of it through one dashboard, REST API and MCP interface under team scoping. It runs on your own infrastructure behind your own firewall, model requests go to your own provider accounts on your own keys, and the vendor receives no prompts, keys, telemetry or trace data. The inline governance capabilities — permissions, budgets, redaction, approvals and a hash-chained audit log — still ship and are described across the platform pages; since the product direction was updated on 6 September 2026 they are retained capabilities rather than the headline.

What is Token Observe not?

Token Observe is not a FinOps suite for your whole cloud bill: it covers AI services, subscriptions and model traffic, and nothing else. It does not discover every subscription by itself — an invoice import finds what the invoice lists — and it does not read hidden chain of thought, because no provider exposes it. It is not an LLM evaluation platform, not an identity provider, not a sandbox or durable agent runtime, not a CMDB-style AI inventory, not a general AI firewall or prompt scanner, not a static agent-BOM scanner, and not an agent marketplace. Those are named strategic non-goals in Token Observe’s own roadmap, and the instruction that follows them is to build adapters and evidence exchange for those layers instead — so the recorded strategy is to federate your identity system, consume your security platform’s verdicts, and run above or beside your existing gateway rather than ask you to remove any of them. It does ship a registry, provider routing, quotas, cost dashboards, prompt and response redaction, trace trees and MCP tool ACLs. Every one of those is treated as table stakes rather than as a reason to buy, because most of the market now ships them too.

How does Token Observe work out what our AI actually costs?

Two separate measurements, kept separate on purpose. The first is what you were actually billed: you register each AI service and subscription with a named owner, then import the invoices as JSON or CSV. Charges are recorded per currency and carry their source and the period they cover, and repeated imports are replay-protected so loading the same invoice twice does not double the total. The second is metered usage through the gateway, priced as a token-cost estimate. Those two numbers are never added together, because an invoice and an estimate measure different things and a combined figure would be true of nothing — a subscription you are billed for monthly and the API traffic beside it are not the same money, and presenting them as one number is the fastest way to produce a total nobody can reconcile against a real vendor record. Two limits matter before you plan around it. An import finds what the invoice lists, so it does not by itself discover a subscription nobody has told you about or expensed elsewhere. And live billing adapters that reconcile continuously against real vendor records are not built yet — what ships today is the register, the import path and the provenance on both sides of it.

Is Token Observe the same product as AgentControl Plane?

Yes. AgentControl Plane is the engineering name Token Observe is developed under: it is the name on the repository, the licence, the architecture decision records and the threat model, so anyone who has read the source will search for it. Token Observe is the product name and is the only name used everywhere else, because two names in the copy split one entity into two half-described ones. Nothing else differs — same code, same source-available licence, same self-hosted deployment, same published defect list. If you arrived from the repository, the documents you have already read remain the authority: the data-flow document, the threat model, the compliance mappings and the known-issues list are what a security review should actually run on, and this site paraphrases them rather than replacing them. Where the two disagree, the repository is right and the site is a defect.

How does an agent start routing through Token Observe?

An agent normally starts routing through Token Observe by changing one environment variable. For the supported OpenAI-compatible, Anthropic and Gemini ingress, pointing OPENAI_BASE_URL or ANTHROPIC_BASE_URL at your Token Observe host is a base-URL change rather than an application refactor, and from that moment the agent has an identity, a permission set, a budget and a searchable record of each governed request. The ingress surface is explicit rather than implied: /v1/chat/completions, /v1/responses, /v1/messages, /v1/embeddings, the native Gemini generateContent and streamGenerateContent paths, /v1/models filtered to what that agent may reach, and /mcp over Streamable HTTP. Whether your own SDK and version behave that way is the first thing a proof of concept settles, and it is the honest limit on the claim. The offline path needs no provider key at all, because a built-in mock provider answers — but it fabricates text, so it proves the plumbing and nothing else.

What happens to our agents if Token Observe is down?

If Token Observe is unavailable, the agents it governs stop calling models, and that is the design rather than a defect. Governance is inline and fails closed: the evaluator returns allow only when every gate passes, and missing, unresolvable or erroring state denies the request. A control you can bypass by turning it off is not a control — which makes Token Observe’s own availability a governance property of your environment rather than somebody else’s problem. Plan for it explicitly: run it close to the agents, watch /readyz, and decide in advance what you do if it stops, because the design-partner gate requires that emergency decision to be named and owned before traffic arrives. Two related behaviours: process admission is global and applied before the body is read, returning 503 ACP_OVERLOADED with a Retry-After when the ceiling is reached, while health, readiness and metrics probes stay reachable.

Does the vendor see our prompts?

No. Token Observe is self-hosted and bring-your-own-key: there is no telemetry, no phone-home, no licence callback and no vendor-operated component in the path, and the licence carries that as a contractual undertaking rather than only a claim. Governed payloads leave your network only for the model and tool providers you configure, after policy and redaction. You do not have to take it on trust, and the check takes about five minutes: list every outbound call site and every hard-coded URL in the server and core packages, confirm each destination comes from operator-supplied configuration bar the admin-invoked price catalogue, check the dependency list, then run the process with egress allowed only to your providers and watch nothing break. Two qualifications belong beside that. Anything you voluntarily send in a support ticket is governed by your support agreement, not by the architecture. And whether the vendor is legally never a processor is counsel’s analysis, not an engineering fact.

How is Token Observe licensed?

Token Observe is published under a commercial source-available licence, version 1.0, from Tenhaw Ltd, registered in England and Wales and governed by the laws of England and Wales. Source-available rather than open source, and the harder of the two words is the accurate one. The rights below run for the subscription term of an order form stating the fees and the permitted scope of use; without one, a thirty-day evaluation grant applies instead. You may install, host and operate it on infrastructure you control; read, compile and modify the source and create derivative works for internal purposes, including to integrate it and to remediate defects; keep backup, disaster-recovery, development, testing, staging and training copies; and have contractors exercise those rights for you. You own the modifications you make and need not disclose them. You may not redistribute it, or provide it or a substantial part of its functionality to a third party as a hosted, managed or white-labelled service. Security research and publication of the results are expressly permitted. One caveat travels with all of it: the published licence is a template pending review by counsel, not an executed grant of rights.

get in touch

Tell us what your agents are allowed to do.

Write to hello@tenhaw.com with what your agents do, which providers they call and what would have to be true for you to put something in front of them. James Rooney replies. You will get a straight answer about whether Token Observe fits, including when it does not.

no form · no qualification step · no sales desk · the other three ways in