Skip to content

Parameter Types ​

Tool parameter schemas and interfaces.

Partial reference

These 16 interfaces are the TypeScript parameter shapes exported from src/types/index.ts. They cover roughly 16 of the server's 51 tools — the analytics, discovery, media, composite, DM, bookmark, and starter-pack tools define their input schemas elsewhere and are not listed here.

Post Operations ​

ICreatePostParams ​

typescript
interface ICreatePostParams {
  text: string;
  reply?: {
    root: ATURI;
    parent: ATURI;
  };
  embed?: {
    images?: Array<{
      alt: string;
      image: Blob;
    }>;
    external?: {
      uri: string;
      title: string;
      description: string;
    };
  };
  langs?: string[];
}

IReplyToPostParams ​

typescript
interface IReplyToPostParams {
  text: string;
  root: ATURI;
  parent: ATURI;
  langs?: string[];
}

ILikePostParams ​

typescript
interface ILikePostParams {
  uri: ATURI;
  cid: CID;
}

IUnlikePostParams ​

typescript
interface IUnlikePostParams {
  likeUri: ATURI;
}

IRepostParams ​

typescript
interface IRepostParams {
  uri: ATURI;
  cid: CID;
  text?: string; // Quote text
}

IUnrepostParams ​

typescript
interface IUnrepostParams {
  repostUri: ATURI;
}

IDeletePostParams ​

typescript
interface IDeletePostParams {
  uri: ATURI;
}

User Operations ​

IFollowUserParams ​

typescript
interface IFollowUserParams {
  actor: string; // DID or handle
}

IUnfollowUserParams ​

typescript
interface IUnfollowUserParams {
  followUri: ATURI;
}

IGetUserProfileParams ​

typescript
interface IGetUserProfileParams {
  actor: string; // DID or handle
}

IUpdateProfileParams ​

typescript
interface IUpdateProfileParams {
  displayName?: string;
  description?: string;
  avatar?: Blob;
  banner?: Blob;
}

Data Retrieval ​

ISearchPostsParams ​

typescript
interface ISearchPostsParams {
  q: string;
  limit?: number;
  cursor?: string;
  sort?: 'top' | 'latest';
  since?: string;
  until?: string;
  mentions?: string;
  author?: string;
  lang?: string;
  domain?: string;
  url?: string;
}

IGetTimelineParams ​

typescript
interface IGetTimelineParams {
  algorithm?: string;
  limit?: number;
  cursor?: string;
}

IGetFollowersParams ​

typescript
interface IGetFollowersParams {
  actor: string;
  limit?: number;
  cursor?: string;
}

IGetFollowsParams ​

typescript
interface IGetFollowsParams {
  actor: string;
  limit?: number;
  cursor?: string;
}

IGetNotificationsParams ​

typescript
interface IGetNotificationsParams {
  limit?: number;
  cursor?: string;
  seenAt?: string;
}

Parameter Validation ​

Constraints ​

Text Fields ​

  • Post text: 1-300 characters
  • Alt text: max 1000 characters
  • Display name: max 64 characters
  • Description: max 256 characters

Numeric Fields ​

  • Limit: 1-100 (default varies by tool)
  • Pagination cursor: string

Arrays ​

  • Images: max 4 per post (Bluesky platform limit)
  • Language codes (langs): BCP-47 tags such as en, en-US, or pt-BR — not restricted to two-letter codes

Validation Examples ​

The snippets below are illustrative. Identifier validation is performed at runtime by the exported validateATURI / validateDID helpers, which throw on invalid input.

typescript
// Illustrative: post text length check
function validatePostText(text: string): void {
  if (text.length < 1) {
    throw new Error('Post text cannot be empty');
  }
  if (text.length > 300) {
    throw new Error('Post text cannot exceed 300 characters');
  }
}

// Illustrative: actor must be a DID or a handle (contains a dot)
function validateActor(actor: string): void {
  if (!actor) {
    throw new Error('Actor is required');
  }
  if (!actor.startsWith('did:') && !actor.includes('.')) {
    throw new Error('Actor must be a DID or handle');
  }
}

// Prefer the exported validator for AT URIs
import { validateATURI } from './types';
const uri = validateATURI(input); // throws if invalid

Optional vs Required ​

Required Parameters ​

  • Always must be provided
  • Validation fails if missing
  • No default value

Optional Parameters ​

  • Can be omitted
  • May have default values
  • Validation only if provided

Example ​

typescript
// Required: text
// Optional: reply, embed, langs
const params: ICreatePostParams = {
  text: 'Hello world!', // Required
  langs: ['en'], // Optional
};

Best Practices ​

Parameter Construction ​

  • Validate before passing to tools
  • Use TypeScript for type safety
  • Provide sensible defaults
  • Document constraints

Error Handling ​

  • Validate early
  • Provide clear error messages
  • Include field names in errors
  • Log validation failures

Type Safety ​

  • Use interfaces for all parameters
  • Don't use any types
  • Implement type guards
  • Use branded types for identifiers

See Also ​