Skip to main content
Your agent interacts with GitHub, PagerDuty, Linear, or Datadog. Platform connectors map those interactions to consistent action and resource types so guardrails can evaluate them uniformly.

GitHub and GitLab

import { withGitHubAction, withGitLabAction } from "@apie-sh/sdk";

await withGitHubAction(apie, {
  runId: run.id,
  actionType: "merge",
  resourceTarget: "acme/api",
  environment: "production",
  riskLevel: "high",
}, async () => github.mergePullRequest(42));

await withGitLabAction(apie, {
  runId: run.id,
  actionType: "execute",
  resourceTarget: "acme/deploy",
  environment: "production",
}, async () => gitlab.triggerPipeline("main"));
Defaults: provider github/gitlab, resource type code_repository.

Issue trackers (Linear, Jira)

import { withIssueTrackerAction } from "@apie-sh/sdk";

await withIssueTrackerAction(apie, {
  runId: run.id,
  provider: "linear",
  actionType: "create",
  resourceTarget: "SUP-123",
  environment: "production",
}, async () => linear.createIssue({ title: "Escalation" }));
Defaults: resource type work_item.

Incident response (PagerDuty, Opsgenie)

import { withIncidentResponseAction } from "@apie-sh/sdk";

await withIncidentResponseAction(apie, {
  runId: run.id,
  provider: "pagerduty",
  actionType: "execute",
  environment: "production",
  riskLevel: "high",
}, async () => pagerduty.page("on-call-primary"));

Observability (Datadog, Sentry)

import { withObservabilityCorrelation } from "@apie-sh/sdk";

await withObservabilityCorrelation(apie, {
  runId: run.id,
  provider: "sentry",
  actionType: "read",
  resourceTarget: "api-service",
}, async () => sentry.searchIssues({ query: "error rate" }));
Defaults: resource type observability_event.

Canonical tool action

For custom platforms, use withCanonicalToolAction with explicit provider and types:
import { withCanonicalToolAction } from "@apie-sh/sdk";

await withCanonicalToolAction(apie, {
  runId: run.id,
  toolName: "sentry.search_issues",
  provider: "sentry",
  actionType: "read",
  resourceType: "incident",
  environment: "production",
  riskLevel: "medium",
}, async () => sentry.searchIssues({ service: "api" }));

What you’ll see

Tool calls with consistent provider and resource types — making guardrail templates and boundary maps work across platforms.

Recipe

See Incident remediation recipe for withCanonicalToolAction with Sentry.

Next steps

Action and resource metadata

Metadata model deep dive.

Declare capabilities

Declare platform tools in config.