Member Junction
    Preparing search index...

    Action that performs a web search through whichever provider the administrator has configured.

    This is the provider-neutral entry point agents should bind to. It holds no vendor logic of its own: it extracts parameters, hands them to WebSearchEngine, and maps the result back. Which vendor actually serves the request — Brave, Tavily, Perplexity, or a fallback when the first choice is rate-limited — is decided by the MJ: Web Search Providers records and their Priority, not by the caller and not by the agent.

    That is the point. An LLM choosing between named vendor actions is making an infrastructure decision it has no information for: it cannot know which key is configured, which is cheaper, or which is rate-limited right now. Swapping vendors here is a metadata edit, with no change to any agent.

    Provider is the escape hatch for a caller who genuinely knows better. When set, the engine fails rather than substituting — a silent substitution is how you discover months later that a deliberate choice stopped being honoured.

    // Let the administrator's priority order decide
    await runAction({
    ActionName: 'Web Search',
    Params: [{ Name: 'Query', Value: 'association management trends' }]
    });

    // Recent results from two domains, with a synthesized answer
    await runAction({
    ActionName: 'Web Search',
    Params: [
    { Name: 'Query', Value: 'IRS Form 990 filing changes' },
    { Name: 'Freshness', Value: 'month' },
    { Name: 'IncludeDomains', Value: ['irs.gov', 'councilofnonprofits.org'] },
    { Name: 'IncludeAnswer', Value: true }
    ]
    });

    // Pin one vendor — fails if it is not available rather than using another
    await runAction({
    ActionName: 'Web Search',
    Params: [
    { Name: 'Query', Value: 'quantum error correction 2026' },
    { Name: 'Provider', Value: 'Brave' }
    ]
    });

    Hierarchy (View Summary)

    Index

    Constructors

    Properties

    Accessors

    Methods

    Constructors

    Properties

    AuthorizesCaller: boolean

    True when the action authorizes its caller itself, so a public entry point such as the RunAction mutation may run it for an authenticated user without an MJ: Action Authorizations link. Set it only on an action that either checks an authorization the caller must hold, or reads and writes only with the caller's own permissions. Leave it false for an action that acts with more authority than its caller, or that reaches data or sends messages the caller chooses but could not otherwise reach.

    The engine reads the marker only from the class that runs, never from its parent classes. A subclass that overrides a marked action must declare the marker again.

    Accessors

    • get SupportsAudience(): boolean

      Whether this action can bound what it returns to an audience (RunActionParams.Audience): everyone besides the caller who will see its output, such as the other participants of a shared conversation.

      false by default, and the engine enforces it: when a run's audience adds a reader beyond the caller, ActionEngineServer.RunAction refuses the action with result code AUDIENCE_UNSUPPORTED, without running it. Override to return true only when the action honours the audience in full — every record, snippet and count it returns is something every reader may see (pass the audience to the search engine, check each reader's entitlement to anything it scopes by, and leave out aggregates computed before that filtering).

      Returns boolean

    Methods

    • Executes the search.

      Parameters

      • params: RunActionParams

        The action parameters containing:

        • Query: Search query text (required)
        • MaxResults: Desired result count, clamped to the serving provider's cap (default 10)
        • Provider: Pin to one provider by Name or DriverClass. Fails if unavailable
        • IncludeDomains / ExcludeDomains: Array or comma-separated domain lists
        • Freshness: 'day' | 'week' | 'month' | 'year'
        • Country: Two-letter country code, e.g. 'US'
        • Language: Language code, e.g. 'en'
        • SafeSearch: 'off' | 'moderate' | 'strict' (default 'moderate')
        • IncludeAnswer: Also return a synthesized answer, restricting provider selection

      Returns Promise<ActionResultSimple>

      Normalised results plus which provider served them