Skip to content

feat(agents): add the Connect agent form with manual entry - #233

Open
marekdano wants to merge 1 commit into
mainfrom
7350-add-agent-form-manually
Open

marekdano wants to merge 1 commit into
mainfrom
7350-add-agent-form-manually

Conversation

@marekdano

Copy link
Copy Markdown
Contributor

Closes IBM/mcp-context-forge#7350

Summary

Builds the Connect agent form for #7023: IBM/mcp-context-forge#7023. It covers #7350 (add an agent that publishes no card) and the UI side of #7025 (register from an Agent Card). It follows the Figma flow.

  • Entry point: the Connect agent card on the Agents page now opens the form. Cancel and a successful save return to the list.
  • Card flow: URL, then a review of the card (skills, version, endpoint, interfaces, requirements), then credentials and visibility, then register. The card decides which credential fields appear.
  • Enter manually: a collapsible section on the URL step for agents without a card. Fields:
    • Name, Visibility (with a team picker), Endpoint URL
    • Protocol version
    • Authentication: none, basic, bearer, custom headers, OAuth 2.0 client credentials, query parameter
    • Tags and Description (both optional)
  • Card unavailable: any non-success card read (no card, credentials needed, unreachable, request error) shows "Agent card not available: add the details for a running agent manually." and opens the manual section.
  • Shared code: agentsApi.fetchCard and agentsApi.create, a VisibilityFields component, and en-US, es-ES and pt-BR strings.

Needs attention

  • Depends on an unmerged route. The card flow calls POST /v1/a2a/fetch-card from feat(a2a): add POST /a2a/fetch-card to read an Agent Card before registration IBM/mcp-context-forge#7377, which is still open. Until it ships, reading a card fails and the form falls back to manual entry. The response types in src/types/agentCard.ts are hand-written from that PR. Replace them with generated types once openapi.json is regenerated.
  • Protocol binding is not saved. HTTP+JSON is shown but disabled, because the API stores no binding (#7383, open). The comments tagged TODO(IBM/mcp-context-forge#7383) mark what to enable.
  • OAuth 2.0: The manual form collects only client credentials (token URL, client ID and secret, scopes). A card that declares OAuth can't be registered from the card flow yet.
  • Agents still hidden from the sidebar. The page is reachable by URL only. Un-hiding stays with #6698.
  • Design deviations:
    • The bottom button reads "Connect", not "Continue", when manual entry is open.
    • The "Add skill" section is not built, as it was removed from the design.
    • Tags and Description sit at the end of the manual fields because the frame didn't show their position.
  • Possible follow-up: VisibilityFields lives under components/agents/. The same visibility dropdown is hand-written in six other forms, so it could move to components/common/ and be adopted there.

Test plan

  • npx prettier --check src server e2e, npx eslint src server e2e, and typecheck for tsconfig.app.json and tsconfig.e2e.json
  • The repo's detect-secrets pre-commit hook passes on the changed files
  • npx vitest run --coverage: 3,575 passed, 1 skipped. Coverage meets the repo thresholds (statements 96.3%, branches 90.4%, functions 95.5%,
    lines 97.5%).
  • npx playwright test: 298 passed, 2 skipped (API stubbed)
  • Manually: open the form with and without a2a.create, register an agent with each manual auth type, and check the card-unavailable message

Screenshots

Screenshot 2026-11-09 at 14 25 03 Screenshot 2026-11-09 at 14 25 14 Screenshot 2026-11-09 at 14 25 23

  Part of IBM/mcp-context-forge#7023. Implements #7350 (add an agent that
  publishes no Agent Card) and the UI side of #7025.

  - Open a Connect agent form from the Connect agent card
  - Card flow: read the card from a URL, review it, then collect
    credentials and visibility and register the agent
  - "Enter manually" for agents without a card, with name, visibility,
    endpoint URL, protocol version, authentication (none, basic, bearer,
    custom headers, OAuth 2.0 client credentials, query parameter), tags
    and description. Any failed card read shows "Agent card not
    available" and opens it
  - Add agentsApi.fetchCard and agentsApi.create, and a shared
    VisibilityFields component
  - Add unit tests, e2e tests and en-US, es-ES and pt-BR strings

Signed-off-by: Marek Dano <mk.dano@gmail.com>
@marekdano marekdano self-assigned this Nov 9, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

[UI-REWRITE]: Add an agent manually, for agents that publish no Agent Card

1 participant