Skip to main content
Glama

Server Configuration

Describes the environment variables required to run the server.

NameRequiredDescriptionDefault
ZEFIX_USERNoZefix PublicREST username credential, issued by zefix@bj.admin.ch. Together with ZEFIX_PASSWORD, it adds capital, status, former names and corporate relations to swissco_lookup, and a name-prefix search to swissco_search.
SWISSCO_STATENoWhere gazette bodies and the two FINMA files are cached. Defaults to ~/.swissco.
ZEFIX_PASSWORDNoZefix PublicREST password credential, issued by zefix@bj.admin.ch. Together with ZEFIX_USER, it adds capital, status, former names and corporate relations to swissco_lookup, and a name-prefix search to swissco_search.
SWISSCO_INTERVALNoSeconds between requests. It can raise the floor of 0.5s and cannot lower it.

Instructions

Guidance the server publishes about itself, which clients place ahead of the tool catalog so the model reads it before choosing anything.

This server publishes no instructions, or was last inspected before Glama recorded them.

Capabilities

Features and capabilities supported by this server

Protocol revision2025-11-25

CapabilityDetails
tools
{
  "listChanged": false
}
prompts
{
  "listChanged": false
}
resources
{
  "subscribe": false,
  "listChanged": false
}
experimental
{}

Tools

Functions exposed to the LLM to take actions

NameDescription
swissco_lookupA

Everything the commercial register publishes about one company.

One row: legal_name, uid, chid, ehra_id, legal_form_code, legal_form, municipality, canton, address, purpose and zefix_uri. With Zefix PublicREST credentials in the environment it also carries status, capital_nominal, capital_currency, deletion_date, old_names, branch_offices, head_offices, has_taken_over, was_taken_over_by and cantonal_excerpt.

finma_licence adds finma_licence, finma_category, finma_city and finma_flags. lei adds lei, lei_status, direct_parent and ultimate_parent.

purpose is the statutory purpose: how the company describes what it does, in its own words, filed with the register.

swissco_searchA

Companies whose name or statutory purpose contains term.

Over LINDAS, each row carries legal_name, uid, legal_form, municipality, canton and purpose. Over PublicREST: legal_name, uid, chid, ehra_id, canton and status.

The purpose is what makes this worth running. It is how a company describes its own business to the register, so "hydrogen storage" finds companies whose name mentions neither word. via="rest" matches the start of a name instead.

swissco_publicationsA

Commercial-register publications from the Swiss Official Gazette of Commerce.

Each row carries publication_date, canton, sub_rubric, title, language, state, id and url. With event_types, each body is fetched and parsed, and the rows instead carry publication_date, canton, sub_rubric, company_name, uid, events, effective_date, state, id and url.

The event types are: INCORPORATION, BRANCH_CREATED, SEAT_MOVED, ADDRESS_CHANGED, NAME_CHANGED, PURPOSE_CHANGED, CAPITAL_INCREASED, MERGER, OFFICERS_CHANGED, LIQUIDATION, DELETED.

The gazette publishes around a thousand commercial-register entries a day. Every filter here is applied over the listed publications, because the anonymous API ignores its own cantons, subRubrics and q parameters.

swissco_eventsA

One company's registry events, each confirmed against the publication's own UID.

Each row carries publication_date, event_type, effective_date, company_name, uid, canton, sub_rubric, id and url, newest first.

The gazette's list page carries a title and no UID, so the UID resolves to a legal name, the name selects candidate publications, and each candidate's body is fetched and kept only when its own UID matches. A publication carrying no UID is dropped.

Bodies are cached under the state directory and keyed by publication id, so an overlapping second call over the same range costs almost nothing.

swissco_tendersA

Public-procurement projects published on simap.

Each row carries title, project_number, buyer, canton, city, project_type, process_type, publication_date, publication_type, project_id and publication_id.

The publication types are: abandonment, advance_notice, award, competition, direct_award, participant_selection, request_for_information, revocation, selective_offering_phase, study_contract, tender.

The date matches each project's newest publication, whichever type that publication is, and pub_types is what narrows it to awards. The supplier named on an award carries no UID, so this lists projects and buyers. Use swissco_vendor for whether a given company is in simap's vendor directory.

swissco_vendorA

A company in simap's vendor directory, by UID or by name.

A text query returns rows of name, uid_no, canton, city, postal_code, active, is_bidding_consortium and vendor_id.

A UID resolves to a legal name, searches the directory for it and keeps only profiles whose own uidNo matches, then returns that profile: name, uid_no, additional_name, street, postal_code, city, canton, url, company_size, type_of_services, cpv_codes, bkp_codes, npk_codes, business_purpose, is_bidding_consortium, leading_vendor_name and vendor_id.

A company can bid without holding a directory profile, and a bidding consortium carries no UID at all, so an absent UID means only that no profile is filed under it.

swissco_finmaA

Institutions on FINMA's list of authorised banks and securities firms.

Each row carries name, city, licence_type, supervisory_category, uid, foreign_control, no_securities_firm_activity, non_account_holding_securities_firm and about_to_cease_operations.

This one list covers banks and securities firms. Insurers, portfolio managers and fund management companies hold their authorisations on other FINMA lists, so a company absent here may still be supervised. FINMA also publishes some authorised institutions with no UID, which no UID lookup can reach.

Both published files are cached under the state directory for a day, so the first call in a day is the slow one.

swissco_leiA

A company's Legal Entity Identifier and the group it is consolidated into.

One row: legal_name, lei, registered_as, jurisdiction, status, registration_status, legal_form, city, country, other_names, bic, initial_registration_date, last_update_date, next_renewal_date, direct_parent, ultimate_parent and direct_children.

With children, one row per consolidated entity: legal_name, lei, jurisdiction, registered_as, status, city and country.

GLEIF Level 2 records accounting consolidation, so a parent here is the entity that consolidates this one into its accounts. That parent is frequently foreign, which is the case for reading it: the Swiss commercial register carries no entry for a Swiss company's owner abroad.

About 28,000 Swiss entities hold an LEI against roughly 790,000 in the commercial register. An absent LEI is the normal case.

swissco_researchA

Federally funded research projects from ARAMIS, Innosuisse and SNSF money included.

A text query returns rows of title, project_number, office, status, start_date, end_date, granted_total_costs, participants and aramis_id.

A UID searches ARAMIS for the company's name, then keeps only projects carrying a participant whose own UID matches, and reports role and uid in place of participants.

ARAMIS searches project titles, abstracts and the free-text contractor field, and indexes the structured participant list under none of them. A company named only as a structured partner cannot be found, which is where Innosuisse implementation partners usually sit. An empty result means no project mentions the company by name, and is not evidence that it took no federal research money.

Prompts

Interactive templates invoked by user choice

NameDescription

No prompts

Resources

Contextual data attached and managed by the client

NameDescription

No resources

TDQS

A3.9/5.0

Scored across 9 tools

Disambiguation4/5

Each tool maps to a distinct data source or action (register lookup, register search, gazette feed, company events, tenders, vendor directory, FINMA, LEI, research). The only real overlap is between swissco_publications (general gazette stream) and swissco_events (gazette events for one company), but the descriptions clearly distinguish the two scopes.

Naming Consistency4/5

All tools share the swissco_ prefix and snake_case formatting, giving a predictable namespace. The suffix mixes action words (lookup, search) with data-source nouns (finma, lei, tenders, research), a minor inconsistency but still readable and non-ambiguous.

Tool Count5/5

Nine tools is well-scoped for a multi-source Swiss company-data aggregator. Each tool covers a genuinely distinct source, so none feels redundant or padded.

Completeness4/5

The surface covers identities (lookup/search), registry activity (publications/events), public money (tenders/research), and supervision (finma/lei/vendor) — a strong lifecycle view. Minor gaps exist (e.g. no way to filter by canton or list all results), but agents can work around these with the provided filters.

Maintenance

ActivityMaintained
ResponsivenessNo issues